导航:首页 > 编程语言 > js按一定概率随机抽取

js按一定概率随机抽取

发布时间:2023-03-15 13:20:13

js 随机函数

在写js中,我们经常遇见 js 随机函数,总结一下最近写验证码的时候  用到过的js 随机函数

Math.random(); 结果为0-1间的随机数(包括0,不包括1)

Math.floor( n ); 参数为Number 类型 ,函数结果 为num 的整数部分

Math.round( n ) ; 参数为Number 类型。函数结果 为num 四舍五入部分

Math.ceil( n ); 参数为Number类型。 函数结果为大于等于n的整数

Math.ceil(Math.random()*10) : 主要获取1到10的随机整数,取0的几率极小。

Math.round(Math.random()) : 可均衡获取0到1的随机整数

Math.round(Math.random()*10)  可基本均衡获取0到10的随机整数,其中获取最小值0和最大值10的几率少一半

Math.floor(Math.random()*10) 可均衡获取0到9的随机整数

例子:

    1. 实现一个 随机 汉字

         randomChi(){   // 随机生成汉字

                return `\\u${Math.round(Math.random() * 20901 + 19968 ).toString(16)}`;

           }

    2. 实现一个n - m 的整数 ( 参照于 http://www.jb51.net/article/56019.htm )

        生成 n-m , 包含n 但不包含 m的整数

            第一步算出 m -n的值,假设等于 w 

            第二步 Math.random( )  * w

            第三步 Math.random() * w +n

            第四步 parseInt( Math.random() * w +n, 10)

         生成一个 n-m ,包含 m 但不包含 n的整数

            第一步算出 m-n的值,假设等于w

            第二步Math.random()*w

            第三步Math.random()*w+n

            第四步Math.floor(Math.random()*w+n) + 1

         生成一个不包含 n -m 但都不包含 n  和 m

             第一步算出 m-n-2的值,假设等于w

              第二步Math.random()*w

              第三步Math.random()*w+n +1

               第四步Math.round(Math.random()*w+n+1) 或者 Math.ceil(Math.random()*w+n+1)

            生成n-m,包含n和m的随机数:

                第一步算出 m-n的值,假设等于w

                第二步Math.random()*w

                第三步Math.random()*w+n

                第四步Math.round(Math.random()*w+n) 或者 Math.ceil(Math.random()*w+n)

             实例: 生成800-1500的随机整数,包含800但不包含1500

                1500-800 = 700

                Math.random()*700

                var num = Math.random()*700 + 800;

                num = parseInt(num, 10);

更多实例 请查看  https://github.com/Mrangmaomao

⑵ 用js怎么编写一个随机抽取人的应用

<html>
<boby>
</body>

<script
language="javascript">
window.onload = function(){
var arr =
["太阳光大、父母恩大、君子量大、小人气大","成功是优点的发挥,失败版是缺点的累积权","不要小看自己,因为人有无限的可能",

"口说好话、心想好意、身行好事","原谅别人就是善待自己","手心向下是助人,手心向上是求人;助人快乐,求人痛苦"
];

var
index = Math.floor((Math.random()*arr.length));
alert(arr[index]);

}

</script>
</html>

⑶ 通过JS如何随机选择一组数据中的一个

vararray=["aaa","bbb","kk","cc","ded","fff","ggg"];
array[Math.round(Math.random()*array.length)]

⑷ js随机抽奖一二三等奖不重复的抽奖逻辑怎么设置

<!DOCTYPEhtml>
<html>
<head>
<title>js随机抽奖一二三等奖不重复的抽奖逻辑怎么设置</title>
<metacharset="UTF-8"/>
<script>
//添加一个随机函数
Math.rand=function(min,max){
functionsubRand(min,max){
min=min?min:0;
max=max?max:9;
varresult=0;
do{
result=Math.random().toString().substr(2,1);
}while(!(result>=min&&result<=max));
returnresult;
}
functiongetBit(maxBit){
maxBit=maxBit?maxBit:max.toString().length;
varresult=[],
count=0;
for(vari=0;i<maxBit;i++){
result.push(subRand());
if(i!=0&&result[i]==result[i-1]){
count++;
}
}
returnmaxBit-count;
}
min=min?min:0;
max=max?max:0;
varresult='',
bit=getBit();
do{
result='';
for(vari=0;i<bit;i++){
result=result+subRand();
}
result=parseInt(result);
}while(!(result>=min&&result<=max));
returnresult;
}
//console.log(Math.rand(0,100));
//LuckDraw抽奖类参数一奖池数组,参数二中奖数量返回中奖索引
functionLuckDraw(pool,numberOfWinners){
varresults=[],
//是否已经中奖
isExists=function(index){
for(vari=0;i<results.length;i++){
if(results[i]==index){
returntrue;
}
}
returnfalse;
},
subLuckDraw=function(){
do{
result=Math.rand(0,pool.length-1);
}while(isExists(result));
returnresult;
}
for(vari=0;i<numberOfWinners;i++){
results.push(subLuckDraw());
}
returnresults;
}
varpool=[
'关',
'张',
'赵',
'马',
'黄',
'曹老板'
];
winners=LuckDraw(pool,3);//返回从奖池中中奖的索引,假设123等奖都只有一名的话各取一个即可
//假设123等奖一等奖1名,二等奖2名,三等奖3名,只需要调用这个函数第二个参数设置为总和6即可
//然后从结果中第一个索引为一等奖23索引为二等奖,456索引为三等奖
console.log(winners);
</script>
</head>
<body>
<script>
for(vari=0;i<winners.length;i++){
document.write(pool[winners[i]]+'恭喜你中了'+(i+1)+'等奖<br/>');
}
</script>
</body>
</html>

⑸ JavaScript问题:一个有一百个随机数字的数组中(可能有重复数字),随机抽取十个,且这十个数字不重复。

<script>
//比如这个数组有100多个值
vararr=newArray(1,3,2,3,5,5,4,6,8,9,10,11,11,12,12,13,13,14);

//获取数组中的随机值函数
functionrand(arr){
varnum=parseInt(Math.random()*(arr.length));
returnarr[num];
}

//创建一个新数组
arr2=newArray();

//从arr中抽出10个不版重复的值赋予权arr2
vari=1;
while(i<=10){
num=rand(arr);
//判断num随机值在arr2中是否已存在
if(arr2.indexOf(num)==-1){
arr2[i]=num;
document.write('抽取的第'+i+'个数字为'+num+'<br>');
alert('抽取的第'+i+'个数字为'+num);
i++;
}else{
alert('抽取的结果中已存在'+num+'需要重新获取');
}

}


</script>

⑹ js 随机按机率取数

随机那最简单的就是用随机数了。下面是简单的例子。仅供参考:专

<body>
<divstyle="width:100px;height:100px;border:1pxsolid#ccc;"></div>
</body>
<scripttype="text/javascript">
varoDiv=document.getElementsByTagName('div')[0];
vararr=[1,2,3,4,5,6,7,8,94,1,3,4,5,6];
oDiv.onclick=function(){
属oDiv.innerHTML=arr[Math.floor(Math.random()*arr.length)];
};
</script>

⑺ js数组随机抽取显示,怎么控制指定元素显示的概率

可以利用Math对象的random方法。它将返回一个0到1之间的浮点类型数。但仅仅这个还不够,必须还要有回一定的答算法才可以实现一定范围取值。

Math.floor(Math.random()*x)//返回0到x-1的随机整数。

Math.floor(Math.random()*x+y)//返回0+y到x-1+y的随机整数

其中floor方法是用来取浮点类型的整数部分。

顺便说一下,JS很难控制抽奖抽中的概率,毕竟还没有这种算法。我有一个建议,就是将同事能抽的数字范围增大,孩子能抽的数字范围减小。比如中奖号码为96,则同事可写:

Math.floor(Math.random()*100+50)//取50到149

孩子可这样写:

Math.floor(Math.random()*70+70) //取70到139

测试结果如图(这个结果是10次抽到号码需要的次数的平均值,结果四舍五入):

这样孩子的抽中概率比同事的抽中概率要大了。

阅读全文

与js按一定概率随机抽取相关的资料

热点内容
怎么做到彻底理解编程语言 浏览:167
机器人和程序编程哪个好 浏览:563
怎么改苹果手机icloud账号和密码 浏览:526
什么是P2P数据库系统 浏览:494
js遍历标签数组长度 浏览:705
为什么u盘读有些文件读取不出来 浏览:485
linux内核体系架构 浏览:758
java高低字节 浏览:105
win10安全模式也死机 浏览:159
最简单的数据库开发软件 浏览:718
迅雷下载网络断开 浏览:792
考勤系统数据库在哪个文件夹 浏览:134
creo30绘图配置文件设置 浏览:624
苹果ID被锁要交600元交不交 浏览:29
实例化module配置文件失败 浏览:872
网站源码是什么东西 浏览:90
怎样打开桌面隐藏文件 浏览:904
拯救者的颜色配置文件 浏览:860
微信转发朋友圈送礼品 浏览:905
新电脑装win10教程 浏览:130

友情链接