如何以最有效的方式对数组的值进行洗牌?
每个元素只是一个包含HTML的字符串.
我需要循环运行80次并生成0-79之间的随机数,但它不会重复已经生成的数字.
我怎样才能做到这一点?
我有一个JSON对象,它由一长串其他JSON对象组成,这些对象有一些共同的属性,如:
var myData = {
"0291" : { "Firstname" : "Jeremy", "Surname" : "Dyson" },
"0398" : { "Firstnname" : "Billy", "Surname" : "Bunter" },
"6714" : { "Firstnname" : "Harry", "Surname" : "Peterson" },
"9080" : { "Firstnname" : "Barry", "secondname": "Joe", "Surname" : "Mainwaring"}
...
...
}
Run Code Online (Sandbox Code Playgroud)
我已经构建了一个html模板.使用JS,我想以随机顺序选择或迭代(随机选择+循环)数据{}中的对象,这样我就可以为每个访问者动态填写HTML.随机部分很重要,因此每个访问者可能会得到不同的数据.
简单的JavaScript或jQuery解决方案将在部署它的上下文中工作.
编辑:我实施的解决方案如下.
1.收集所有密钥:
var keyArray = Object.keys(myData);
Run Code Online (Sandbox Code Playgroud)
2. 随机播放功能:
function shuffle(o){ //v1.0
for(var j, x, i = o.length; i; j = parseInt(Math.random() * i), x = …Run Code Online (Sandbox Code Playgroud) 我试图从数组中显示3个随机值.以下脚本仅返回javaScript数组中的单个项目.
var arrayNum = ['One', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine'];
var singleRandom = arrayNum[Math.floor(Math.random() * arrayNum.length)];
alert(singleRandom);
Run Code Online (Sandbox Code Playgroud)
但我想从数组中显示三个随机值arrayNum,任何一个指导我是否可以使用javascript从数组中获取3个唯一的随机值?如果有人指导我,我将不胜感激.谢谢
我有这个功能来创建一个随机的4位数字
generateCode = function(){
var fullNumber = [];
var digit1 = Math.floor(Math.random() * 9) + 1;
var digit2 = Math.floor(Math.random() * 9) + 1;
var digit3 = Math.floor(Math.random() * 9) + 1;
var digit4 = Math.floor(Math.random() * 9) + 1;
fullNumber.push(digit1, digit2, digit3, digit4);
this.theCode(fullNumber.join("")) ;
}
Run Code Online (Sandbox Code Playgroud)
但我需要创建一个没有重复数字的4位数随机数.所以"1234"或"9673"......但不是"1145"或"5668"
任何帮助都是非常感谢的人!不确定有效的方式来实现这个目标
我想做的是为希腊彩票游戏(Tzoker)生成6个随机数,5个在1-45范围内,1个在1-25范围内.前5个数字应该是唯一的.通过按下按钮,我想使用jQuery将这些数字添加到div(我有一些工作代码用于此部分).
我认为使用循环很容易,但我发现自己无法检查生成的数字是否已经存在.循环只包含前5个数字,因为最后一个数字可以等于其他5个数字中的一个.
我正在通过向youtube学习来制作报价显示网站。我对一个问题有好奇心。当我按下按钮时,两次或两次以上使用相同的引号,但有时并不总是这样(我使用Math.random(),因此通常是这样)。我希望当我按下按钮时,它会改变,而不是保持不变。
我不知道,所以我什么也没做。
const quotes = [
{
author: 'Ramiz Karaeski',
quote: 'Meyvay? soymadan içinden ne ç?kacak bilemem, karde?.'
},
{
author: 'Franz Kafka',
quote: 'Beyinlerimiz sava?s?n isterdim ama görüyorum ki silahs?n?z bay?m.'
},
{
author: 'Fyodor Dostoyevski',
quote: 'Cehennem nedir? Sevginin art?k imkans?z oldu?una dair çekilen bir ac?d?r.'
},
{
author: 'Lev Tolstoy',
quote: 'Herkes dünyay? de?i?tirmeyi dü?ünür, ama kimse kendini de?i?tirmeyi dü?ünmez.'
},
{
author: 'Charles Bukowski',
quote: '?nsan her zaman ihanet eder sonunda. Kimseye güvenme.'
},
{
author: …Run Code Online (Sandbox Code Playgroud) 假设 JavaScript 中的所有字符都是a, b, c, d,e和f。我想做的是在字符之间创建随机映射。所以上面的内容可能是这样的
{ `a` : `e`,
`b` : `b`,
`c` : `e`,
`d` : `b`,
`e` : `a`,
`f` : `c` }
Run Code Online (Sandbox Code Playgroud)
首先,如何获取 JavaScript 中所有可能的字符?
var AllChars = new Array();
// ... fill AllChars with the full range of characters
Run Code Online (Sandbox Code Playgroud) 我有一个应该呈现随机颜色的功能,但不重复颜色.
意思是如果随机选择蓝色,则无法再次选择.当然,这意味着需要一个默认值.我在考虑使用一个switch声明.
这是我目前的代码:
const colors = {
grey: '#BDC8D1',
blue: '#0500FF',
pink: '#FF00C7',
orange: '#FF7A00'
}
const randomColor = () => {
let keys = Object.keys(colors)
return colors[keys[keys.length * Math.random() << 0]]
}
Run Code Online (Sandbox Code Playgroud) 在这个线程中,我们看到了这个简单而漂亮的随机数组算法:
function shuffle<T>(array: T[]): T[] {
return array.sort(() => Math.random() - 0.5);
}
Run Code Online (Sandbox Code Playgroud)
我们可以看到评论说这个算法有偏见。但我制作了一个简单的脚本来创建数组最后一个元素在洗牌后结束的索引的经验概率分布:
function shuffle<T>(array: T[]): T[] {
return array.sort(() => Math.random() - 0.5);
}
Run Code Online (Sandbox Code Playgroud)
我们期望无偏算法具有均匀分布,并且结果非常接近该分布,即使对于具有 100 个元素的数组也是如此。那么为什么这个算法会有偏差呢?
javascript ×10
algorithm ×3
random ×3
arrays ×2
jquery ×2
shuffle ×2
combinations ×1
ecmascript-6 ×1
iterator ×1
json ×1
math ×1
performance ×1