如何让一个随机数出现任意多次
How to make a random number appear as many times as I want
所以我想要一个来自下面代码的随机数(图片)出现我想要的时间。在这种情况下,我正在处理图片。假设我想制作一张名为 1.png 的图片,只是为了在屏幕上快速打印 4 次,然后让图片 5.png 和 6.png 一起返回 10 次(它可以是 3 倍 5.png、7 倍 6.png 和其他我们可以得到 10) 的方法等等。我完全不知道怎么办?
我希望我能以正确的方式解释我想要的,我希望任何人都能提供帮助,谢谢你的帮助。
function RandomImage() {
return (Math.ceil(Math.random() * 10)).toString() + ".png";
}
如果你想复制一个字符串,你可以使用这样的函数
function repeat(item, number=1) {
return Array.from({length: number}).fill(item)
}
你可以这样称呼它:
repeat(RandomImage(), 3) // -> ["1.jpeg", "1.jpeg", "1.jpeg"]
您可以通过设置一个数据结构来做到这一点,该数据结构跟踪特定数字已经被 return 编辑了多少次。
为此,我们可以利用 JavaScript 的 Map 对象。
所以基本思路是这样的:
- 在随机数函数中我们生成一个随机数
- 查看地图我们已经return编辑了多少次
- 万一匹配,例如1==10 次我们回到步骤 1
- 如果没有匹配项,则增加给定数字的映射条目,最终 return 数字
这是一个例子:
let randomNumbers = new Map();
let maxNumbers = 10;
for (let a = 0; a <= maxNumbers; a++) {
randomNumbers.set(a, 0);
}
function RandomImage() {
let failed = false;
let random;
do {
failed = false;
random = Math.ceil(Math.random() * maxNumbers);
switch (random) {
case 1:
if (randomNumbers.get(1) == 4) {
failed = true;
}
break;
case 5:
if (randomNumbers.get(5) + randomNumbers.get(6) == 10) {
failed = true;
}
break;
case 6:
if (randomNumbers.get(5) + randomNumbers.get(6) == 10) {
failed = true;
}
break;
}
}
while (failed);
randomNumbers.set(random, randomNumbers.get(random) + 1);
return random.toString() + ".png";
}
for (let a = 0; a < 50; a++) {
console.log(RandomImage());
}
所以我想要一个来自下面代码的随机数(图片)出现我想要的时间。在这种情况下,我正在处理图片。假设我想制作一张名为 1.png 的图片,只是为了在屏幕上快速打印 4 次,然后让图片 5.png 和 6.png 一起返回 10 次(它可以是 3 倍 5.png、7 倍 6.png 和其他我们可以得到 10) 的方法等等。我完全不知道怎么办?
我希望我能以正确的方式解释我想要的,我希望任何人都能提供帮助,谢谢你的帮助。
function RandomImage() {
return (Math.ceil(Math.random() * 10)).toString() + ".png";
}
如果你想复制一个字符串,你可以使用这样的函数
function repeat(item, number=1) {
return Array.from({length: number}).fill(item)
}
你可以这样称呼它:
repeat(RandomImage(), 3) // -> ["1.jpeg", "1.jpeg", "1.jpeg"]
您可以通过设置一个数据结构来做到这一点,该数据结构跟踪特定数字已经被 return 编辑了多少次。 为此,我们可以利用 JavaScript 的 Map 对象。
所以基本思路是这样的:
- 在随机数函数中我们生成一个随机数
- 查看地图我们已经return编辑了多少次
- 万一匹配,例如1==10 次我们回到步骤 1
- 如果没有匹配项,则增加给定数字的映射条目,最终 return 数字
这是一个例子:
let randomNumbers = new Map();
let maxNumbers = 10;
for (let a = 0; a <= maxNumbers; a++) {
randomNumbers.set(a, 0);
}
function RandomImage() {
let failed = false;
let random;
do {
failed = false;
random = Math.ceil(Math.random() * maxNumbers);
switch (random) {
case 1:
if (randomNumbers.get(1) == 4) {
failed = true;
}
break;
case 5:
if (randomNumbers.get(5) + randomNumbers.get(6) == 10) {
failed = true;
}
break;
case 6:
if (randomNumbers.get(5) + randomNumbers.get(6) == 10) {
failed = true;
}
break;
}
}
while (failed);
randomNumbers.set(random, randomNumbers.get(random) + 1);
return random.toString() + ".png";
}
for (let a = 0; a < 50; a++) {
console.log(RandomImage());
}