导航:首页 > 编程语言 > 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按一定概率随机抽取相关的资料

热点内容
iphone5s包装4g没有气孔 浏览:814
html包含文件代码吗 浏览:50
苹果appstore日本账号 浏览:532
解密dg加密的文件 浏览:206
gsh6什么格式文件 浏览:507
dnf85版本觉醒任务 浏览:998
范冰冰苹果百度云盘资源链接 浏览:507
数据库主机是什么系统 浏览:812
pdf表单教程 浏览:715
百度浏览器去更新安卓破解版 浏览:855
光盘内部应用程序错误 浏览:83
iphone6升级ios9步骤 浏览:873
魔力代码 浏览:497
win10打开局域网文件夹很卡 浏览:986
app收益怎么分 浏览:812
我的世界什么版本好玩 浏览:341
控制专硕如何报考编程 浏览:534
元祖在编程里是什么意思 浏览:491
小码王为什么比核桃编程贵 浏览:627
qq下载app有哪些 浏览:380

友情链接