可能重复:
如何随机化一个javascript数组?
我想在JavaScript中随机播放一系列元素,如下所示:
[0, 3, 3] -> [3, 0, 3]
[9, 3, 6, 0, 6] -> [0, 3, 6, 9, 6]
[3, 3, 6, 0, 6] -> [0, 3, 6, 3, 6]
Run Code Online (Sandbox Code Playgroud) 我用他的JavaScript代码帮助了一个人,我的眼睛被一个看起来像这样的部分抓住了:
function randOrd(){
return (Math.round(Math.random())-0.5);
}
coords.sort(randOrd);
alert(coords);
Run Code Online (Sandbox Code Playgroud)
我的第一个是:嘿,这不可能奏效!但后来我做了一些实验,发现它确实至少似乎提供了很好的随机结果.
然后我做了一些网络搜索,几乎在顶部发现了一篇文章,这段代码最简单地被复制.看起来像一个相当可敬的网站和作者......
但我的直觉告诉我,这一定是错的.特别是因为ECMA标准没有规定排序算法.我认为不同的排序算法会导致不同的非均匀混洗.一些排序算法甚至可能无限循环...
但你怎么看?
而另一个问题是......现在我将如何衡量这种改组技术的结果是多么随机?
更新:我做了一些测量并将结果发布在下面作为答案之一.
我正在使用Postman对服务器进行REST API调用.我想使名称字段动态化,这样我每次都可以使用唯一的名称运行请求.
{
"location":
{
"name": "Testuser2", // this should be unique, eg. Testuser3, Testuser4, etc
"branding_domain_id": "52f9f8e2-72b7-0029-2dfa-84729e59dfee",
"parent_id": "52f9f8e2-731f-b2e1-2dfa-e901218d03d9"
}
}
Run Code Online (Sandbox Code Playgroud) 如何生成包含1-9所有数字的9位整数?喜欢123456798,981234765,342165978等
这样做:
var min = 100000000;
var max = 999999999;
var num = Math.floor(Math.random() * (max - min + 1)) + min;
Run Code Online (Sandbox Code Playgroud)
不起作用给我一个我想要的大部分时间(没有从1到9的所有数字).
111111119是不可接受的,因为每个号码中必须至少有一个"1","2","3",......和"9".
var array = ["one", "two", "three", "four", "five"];
var item = array[Math.floor(Math.random()*array.length)];
Run Code Online (Sandbox Code Playgroud)
上面的代码从数组中随机选择一个项目。但是,我怎么能让它一次从数组中选择 3 个随机元素,而不仅仅是一个。
而不是仅选择three
例如,它应该类似于two five one
.