changes to rand.Range
This commit is contained in:
parent
fc3931f9d2
commit
1816b6cd5d
@ -315,14 +315,14 @@ B rand_range_c2(B t, B w, B x) {
|
|||||||
usz am = 1;
|
usz am = 1;
|
||||||
i64 max = o2i64(x);
|
i64 max = o2i64(x);
|
||||||
if (isArr(w)) {
|
if (isArr(w)) {
|
||||||
if (rnk(w) != 1) thrM("(rand).Range: 𝕨 must be a valid shape");
|
if (rnk(w) > 1) thrM("(rand).Range: 𝕨 must be a valid shape");
|
||||||
SGetU(w);
|
SGetU(w);
|
||||||
for (u64 i = 0; i < a(w)->ia; i++) {
|
usz wia = a(w)->ia;
|
||||||
am *= o2s(GetU(w, i));
|
for (u64 i = 0; i < wia; i++) mulOn(am, o2s(GetU(w, i)));
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
am = o2s(w);
|
am = o2s(w);
|
||||||
}
|
}
|
||||||
|
|
||||||
RAND_START;
|
RAND_START;
|
||||||
Arr* r;
|
Arr* r;
|
||||||
if (max<1) {
|
if (max<1) {
|
||||||
@ -337,17 +337,17 @@ B rand_range_c2(B t, B w, B x) {
|
|||||||
i32* rp; r = m_i32arrp(&rp, am);
|
i32* rp; r = m_i32arrp(&rp, am);
|
||||||
for (usz i = 0; i < am; i++) rp[i] = wy2u0k(wyrand(&seed), max);
|
for (usz i = 0; i < am; i++) rp[i] = wy2u0k(wyrand(&seed), max);
|
||||||
}
|
}
|
||||||
|
|
||||||
RAND_END;
|
RAND_END;
|
||||||
if (isArr(w)) {
|
if (isArr(w)) {
|
||||||
switch (a(w)->ia) {
|
switch (a(w)->ia) {
|
||||||
case 0: { arr_shAlloc(r, 0); break; }
|
case 0: { arr_shAlloc(r, 0); break; }
|
||||||
case 1: { arr_shVec(r); break; }
|
case 1: { arr_shVec(r); break; }
|
||||||
default: {
|
default: {
|
||||||
usz* sh = arr_shAlloc(r, a(w)->ia);
|
usz wia = a(w)->ia;
|
||||||
|
usz* sh = arr_shAlloc(r, wia);
|
||||||
SGetU(w);
|
SGetU(w);
|
||||||
for (usz i = 0; i < a(w)->ia; i++) {
|
for (usz i = 0; i < wia; i++) sh[i] = o2su(GetU(w, i));
|
||||||
sh[i] = o2s(GetU(w, i));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user