Ale*_*dra 71 javascript arrays random
如何创建一个包含40个元素的数组,随机值从0到39?喜欢
[4, 23, 7, 39, 19, 0, 9, 14 ...]
Run Code Online (Sandbox Code Playgroud)
我尝试使用此处的解决方案:
http://freewebdesigntutorials.com/javaScriptTutorials/jsArrayObject/randomizeArrayElements.htm
但我得到的数组很少随机.它产生了许多连续数字的块......
sim*_*bor 138
最短的方法(ES6)
// randomly generated N = 40 length array 0 <= A[N] <= 39
Array.from({length: 40}, () => Math.floor(Math.random() * 40));
Run Code Online (Sandbox Code Playgroud)
请享用!
Phr*_*ogz 42
这是一个解决一个唯一数字列表的解决方案(无需重复).
for (var a=[],i=0;i<40;++i) a[i]=i;
// http://stackoverflow.com/questions/962802#962890
function shuffle(array) {
var tmp, current, top = array.length;
if(top) while(--top) {
current = Math.floor(Math.random() * (top + 1));
tmp = array[current];
array[current] = array[top];
array[top] = tmp;
}
return array;
}
a = shuffle(a);
Run Code Online (Sandbox Code Playgroud)
如果你想允许重复的值(这不是OP想要的那样),那么看看其他地方.:)
Eug*_*hov 40
ES5:
function randomArray(length, max) {
return Array.apply(null, Array(length)).map(function() {
return Math.round(Math.random() * max);
});
}
Run Code Online (Sandbox Code Playgroud)
ES6:
randomArray = (length, max) => [...new Array(length)]
.map(() => Math.round(Math.random() * max));
Run Code Online (Sandbox Code Playgroud)
Dam*_*ica 22
更短的ES6方法:
Array(40).fill().map(() => Math.round(Math.random() * 40))
Run Code Online (Sandbox Code Playgroud)
此外,您可以使用带参数的函数:
const randomArray = (length, max) =>
Array(length).fill().map(() => Math.round(Math.random() * max))
Run Code Online (Sandbox Code Playgroud)
Rob*_*ert 15
Math.random()将返回0到1之间的数字(不包括).所以,如果你想要0-40,可以将多个它由40,最高的结果可能永远不会是你要乘以.
var arr = [];
for (var i=0, t=40; i<t; i++) {
arr.push(Math.round(Math.random() * t))
}
document.write(arr);
Run Code Online (Sandbox Code Playgroud)
http://jsfiddle.net/robert/tUW89/
小智 11
let randomNumber = Array.from({length: 6}, () => Math.floor(Math.random() * 39));
Run Code Online (Sandbox Code Playgroud)
将数组限制为 6 个值,以便于查看。
Jar*_*eck 10
..我得到的数组很少随机.它产生了许多连续数字的块......
随机项目的序列通常包含连续数字的块,参见Gambler's Fallacy.例如:
..我们刚刚连续扔了四个头.由于连续五个头的运行概率只有1/32 ..一个受赌徒谬误影响的人可能会认为这个下一次翻转的可能性不大于是尾巴. http://en.wikipedia.org/wiki/Gamblers_fallacy
小智 8
只需两行代码即可生成包含 10 个随机数的数组。
let result = new Array(10)
result = result.fill(0).map(() => Math.random());
Run Code Online (Sandbox Code Playgroud)
就这样。
console.log(vals);
Run Code Online (Sandbox Code Playgroud)
小智 7
因为*具有比 更高的优先级|,所以可以使用|0替换来更短Math.floor()。
[...Array(40)].map(e=>Math.random()*40|0)
Run Code Online (Sandbox Code Playgroud)
使用一些新的 ES6 功能,现在可以使用以下方法来实现:
function getRandomInt(min, max) {
"use strict";
if (max < min) {
// Swap min and max
[min, max] = [min, max];
}
// Generate random number n, where min <= n <= max
let range = max - min + 1;
return Math.floor(Math.random() * range) + min;
}
let values = Array.from({length: 40}, () => getRandomInt(0, 40));
console.log(values);
Run Code Online (Sandbox Code Playgroud)
请注意,此解决方案仅适用于支持以下 ES6 功能的现代浏览器:箭头函数和 Array.from()。
| 归档时间: |
|
| 查看次数: |
113162 次 |
| 最近记录: |