導航:首頁 > 編程語言 > 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按一定概率隨機抽取相關的資料

熱點內容
給領導看的數據有問題怎麼辦 瀏覽:743
directx11測試工具 瀏覽:946
android混淆so文件 瀏覽:383
數據怎麼傳到盤點機 瀏覽:571
小熊編程怎麼樣 瀏覽:195
c語言編程周長表示什麼 瀏覽:858
消防產品合格證如何在網路上查 瀏覽:467
電腦怎麼查看微信文件 瀏覽:225
iphone瀏覽器滾動 瀏覽:52
設置郵箱地址程序 瀏覽:690
pdf文件全部鏈接 瀏覽:456
秘密文件一般保存多少年 瀏覽:952
文件夾隱藏後怎麼恢復 瀏覽:251
文件恢復360 瀏覽:914
c打開文件夾選擇文件 瀏覽:430
工程變更文件需要多少份 瀏覽:227
風雲三國28文件修改器 瀏覽:461
哪個app有pets詞彙 瀏覽:926
蘋果6s看電影屏幕變暗 瀏覽:474
怎麼注冊文件 瀏覽:600

友情鏈接