所以,我试图从一个数组中选择一个随机条目,然后使它成为在选择每个条目之前不再选择特定条目.基本上,我不希望看到任何相同的条目,直到选择了数组中的所有条目.
所以如果这是我的阵列...
keywords =
[
"ppc",
"games",
"advertise",
"meta",
"home",
"gaming",
"welcome"
]
var keyword = keywords[Math.floor(Math.random()*keywords.length)]
document.write(keyword);
Run Code Online (Sandbox Code Playgroud)
我不希望看到输出:
meta, advertise, home, meta, gaming, welcome, ppc, welcome
Run Code Online (Sandbox Code Playgroud)
因为meta在第二次被选中之后才被选中.我想看到更像的东西:
meta, advertise, gaming,ppc, welcome, home, games, advertise, ppc,
Run Code Online (Sandbox Code Playgroud)
因为在每个条目被随机选择之前没有多次选择任何条目.(第二个循环在第二个"广告"开始,以防你没有发现差异.
但是你可以从我上面发布的代码中看到,我不知道该怎么做.我已经看到了随机选择的条目实际上从数组中完全删除的示例,但这不是我想要做的.我只想要选择每个条目一次,然后重新启动进程.
有谁知道这个代码?
我需要做的是:原始状态:
<div class="shuffledv">
<div id="1"></div>
<div id="2"></div>
<div id="3"></div>
</div>
<div class="shuffledv">
<div id="4"></div>
<div id="5"></div>
<div id="6"></div>
</div>
Run Code Online (Sandbox Code Playgroud)
Shuffle之后:
<div class="shuffledv">
<div id="2"></div>
<div id="3"></div>
<div id="1"></div>
</div>
<div class="shuffledv">
<div id="5"></div>
<div id="4"></div>
<div id="6"></div>
</div>
Run Code Online (Sandbox Code Playgroud)
第一个div中的Divs停留在那里但是被洗牌,同样的类的第二个div也是如此.要在特定div中对div进行洗牌,我使用以下内容:
function shuffle(e) { // pass divs inside #parent to the function
var replace = $('<div>');
var size = e.size();
while (size >= 1) {
var rand = Math.floor(Math.random() * size);
var temp = e.get(rand); // grab a random div from #parent …Run Code Online (Sandbox Code Playgroud) 我想使用javascript随机生成0到4之间的每个数字,每个数字只能出现一次.所以我写了代码:
for(var l=0; l<5; l++) {
var randomNumber = Math.floor(Math.random()*5);
alert(randomNumber)
}
Run Code Online (Sandbox Code Playgroud)
但是这段代码重复了这些值.请帮忙.
我想在打字稿中打乱数组
images:Symbols[] =
[this.seven,this.bell,this.watermelon,this.plum,this.lemon,this.cherry];
Run Code Online (Sandbox Code Playgroud)
我怎样才能洗牌呢?这里 images 是我的数组的名称,符号是数组的数据类型。
我正在尝试编写一个 TypeScript 函数来打乱数组。
默认情况下,我希望洗牌顺序是随机的(但受种子影响)。(我已经可以使用这个功能了function random(seed: number): number:)
但是,我还想允许通过每个项目的重量来影响订单。
换句话说,我希望默认项目权重为 1,如果一个项目的权重为 10,那么它在打乱顺序中较早出现的可能性应该增加 10 倍。
我是否正确地思考过这个问题?这是一个合理的目标吗?
我认为我需要使用 Fisher-Yates 算法,但适应于与主数组长度相同的权重数组,并且主数组将被洗牌,以便较高权重的项目更有可能首先出现。
function removeDuplicates<T>(array: T[]): T[] {
const uniqueValues = new Set<T>();
return array.filter((item) => {
if (!uniqueValues.has(item)) {
uniqueValues.add(item);
return true;
}
return false;
});
}
function duplicateItemsBasedOnWeights<T>(array: T[], weights: number[]): T[] {
const result = [];
for (const [index, element] of array.entries()) {
for (let position = 0; position < weights[index]; position++) {
result.push(element);
}
}
return result;
}
export function …Run Code Online (Sandbox Code Playgroud) 如何以最有效的方式对数组的值进行洗牌?
每个元素只是一个包含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) 我在这里搜索了一些答案,但它似乎不是我需要的东西,或者我只是不知道如何应用它.
我还没有开始任何代码,我只想着怎么做,我不知道该怎么做.我需要你的帮助.
我们假设我有一个由下面这些值组成的数组
[1,2,3,4,5,6,7,8,9]
Run Code Online (Sandbox Code Playgroud)
而且我需要在不重复最后结果的每个数字的位置的情况下将其洗牌.所以它可能会喜欢
[5,3,9,6,2,8,1,4,7]
Run Code Online (Sandbox Code Playgroud)
如果我再次洗牌它会是这样的
[4,7,2,1,8,3,6,9,5]
Run Code Online (Sandbox Code Playgroud)
等等.
好吧,我不知道是否与它有任何关联,但是,宁愿不使用rand().这个东西的任何解决方案?
我有一个类似的for循环
for (var key in myObjectArray) {
[code]
}
Run Code Online (Sandbox Code Playgroud)
我想做同样的事情,除了每次输出的输出顺序.
有没有简单的方法呢?我可以创建一个单独的键数组,对它们进行排序,然后使用索引进行for循环...但这似乎很多工作而且效率很低.
javascript ×8
arrays ×5
random ×5
shuffle ×4
jquery ×2
typescript ×2
for-loop ×1
iterator ×1
json ×1
performance ×1
php ×1