Arrays 在[0,1]中洗牌大小为4的数组

Arrays 在[0,1]中洗牌大小为4的数组,arrays,random,Arrays,Random,我已尝试取小数点%4+1后的前4位 重写数组以适应数字。 例如,如果数组是[1、2、3、4] 兰德给出了0.8765,那么新的数组将是[1,4,3,2]。 问题是如果我得到0.1111之类的值会发生什么?我可以重新运行rand(),直到得到一个好的排列,但我认为有一个更简单的解决方案?您可以将每个数字解释为要与第一个元素交换的索引: const o=[1,2,3,4]; 常数p=[…o]; 常数r=数学随机(); 字符串(r).子字符串(2).拆分(“”).reduce((a,n,t)=>(t

我已尝试取小数点%4+1后的
前4位
重写数组以适应数字。
例如,如果数组是
[1、2、3、4]
兰德给出了0.8765,那么新的数组将是
[1,4,3,2]

问题是如果我得到0.1111之类的值会发生什么?我可以重新运行
rand()
,直到得到一个好的排列,但我认为有一个更简单的解决方案?

您可以将每个数字解释为要与第一个元素交换的索引:

const o=[1,2,3,4];
常数p=[…o];
常数r=数学随机();
字符串(r).子字符串(2).拆分(“”).reduce((a,n,t)=>(t=a[0],a[0]=a[n%a.length],a[n%a.length]=t,a),p)
log(r,“permutes”,o.join(),“to”,p.join())