用js随机从1~100选择一个数字之后选择15个100以内的正整数,不能重复.
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用js随机从1~100选择一个数字之后选择15个100以内的正整数,不能重复.相关的知识,希望对你有一定的参考价值。
<script type="text/javascript">
//准备一个结果数组
var result = [];
while(true)
var isExists = false;
// 获取一个10–100范围的数
var random = parseInt(15 + (85 - 15) * (Math.random()))
// 判断当前随机数是否已经存在
for (var i = 0; i < randoms.length; i++)
if (random === randoms[i])
isExists = true;
break;
// 如果不存在,则添加进去
if (!isExists)
randoms.push(random);
// 如果有10位随机数了,就跳出
if (randoms.length === 15)
break;
console.log(result);
</script>
在ES6(就是ECMAScript的最新版本)中,数组新增了indexOf方法,可以验证数组中是否存在某一项。此时上面的算法可以简化为:
result.indexOf(random)>-1说明已存在,索引从0开始,简化后见下图:
参考技术A 这个问题有些难度从数组中选择不相等的随机整数(python)
【中文标题】从数组中选择不相等的随机整数(python)【英文标题】:choosing non-equal random integers from an array (python) 【发布时间】:2013-11-30 07:13:20 【问题描述】:我对 python 很陌生。我需要在 1 到 100 之间抽取 5 个随机数。但是,这五个数字不能相同。我正在考虑创建一个向量(范围(1, 101))并从向量中提取随机值,然后创建一个循环,说明第二次绘制是否等于第一次绘制,然后绘制另一个随机数,如果之后绘制等于前两次再抽一次,以此类推,直到抽到5个不相等的随机数。有没有更优雅的方法来做到这一点?
【问题讨论】:
random.sample(range(1, 101), 5)
另外,在 python 中,这称为列表。
【参考方案1】:
使用random.sample
:
>>> from random import sample
>>> sample(range(1, 101), 5)
[86, 90, 20, 72, 49]
【讨论】:
这不会选择两个相同的整数吗?例如:[86, 90, 20, 86, 49] ? @user3000626:阅读文档!如果输入没有重复,那么输出中也永远不会有重复。【参考方案2】:您想要的是Fisher-Yates shuffle 的变体。我不“做”python(我偏爱 Java 人),但是,它很简单....
以有序的方式创建源“集”的数组(从 1 到 101 的数组)。
然后你所做的就是将变量last
设置为array.size - 1
,然后执行以下操作:
int[] ret = new int[5] // return array of 5 members.
for (int i = 0; i < 5; i++) // 5 is the number of values you want.
int rand = random(last + 1) // get a random integer from 0 to last (includes last)
# put the value at array[rand] in your return array var
ret[i] = array[rand]
# move the value at the end to the value we just copied out:
array[rand] = array[last]
# decrease the size of the values we can select from:
last--;
这样你就可以从你的集合中选择 5 个随机值。没有重复,都具有相同的概率。
完整的 Fisher-yates shuffle 可以就地对整个阵列执行此操作。我只是使用了你需要的部分算法。
【讨论】:
以上是关于用js随机从1~100选择一个数字之后选择15个100以内的正整数,不能重复.的主要内容,如果未能解决你的问题,请参考以下文章
用js实现随机选取10–100之间的10个且不重复的数字,存入一个数组。
如何在 Python 中列出 n 个数字并随机选择任意数字?