導航:首頁 > 編程語言 > js裡面的隨機數

js裡面的隨機數

發布時間:2024-10-16 14:06:46

㈠ 用js實現隨機選取10–100之間的10個且不重復的數字,存入一個數組。

前面幾個都可以,我只是來寫出我的答案的專。。

vararr=(function(){
var_arr=[];
for(vari=1;i<=100;i++){
屬_arr.push(i);
}
return_arr;
})().sort(function(a,b){
returnMath.random()-0.5;
}).slice(0,10);

㈡ js生成固定數量的隨機數,如果已經存在幾個,則生成剩餘數量的數

js生成隨機數主要用到了內置的Math對象的random()方法。用法如:Math.random()。它返回的是一個 0 ~ 1
之間的隨機數。有了這么一個方法,那生成任意隨機數就好理解了。比如實際中我們可能會有如下的需要:
(1)生成一個 0 - 100 之間的隨機整數,那麼則可以:
parseInt(100*Math.random());

注意:因為Math.random()的返回值是包括0和1的,所以這里是有生成0和100的可能性的。
(2)生成一個從 m - n 之間的隨機整數,例如要生成一個 5 - 15
之間的隨機數,則可以:
parseInt(Math.random()*(15-5+1) + 5);

概括即為:

parseInt(Math.random()*(n-m+1)+m);//生成一個從 m - n 之間的隨機整數

另外根據需要總結了另外兩種常用到的方法,如下:
(3)生成指定位數的隨機整數

function randomNum(n){
var t='';
for(var i=0;i<n;i++){
t+=Math.floor(Math.random()*10);
}
return t;
}

(4)生成指定范圍內的隨機整數

function randomNum(minNum,maxNum){
switch(arguments.length){
case 1:
return parseInt(Math.random()*minNum+1);
break;
case 2:
return parseInt(Math.random()*(maxNum-minNum+1)+minNum);
break;
default:
return 0;
break;
}
}

例如生成 2 - 9之間的隨機整數,則:randomNum(2,9),生成 1 - 22之間隨機整數,則:randomNum(22)
①從0~6中生成3個隨機數。

②判斷3個隨機數是否相等,不相等則執行隱藏操作。

③3隨機數有重復,則重新執行函數。

實現:生成0~6的一個隨機數

復制代碼
代碼如下:

var ran1=parseInt(Math.random()*7);
//Math.random()生成[0,1)的一個隨機數

完整代碼:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script language="javascript" type="text/javascript" src="http://libs..com/jquery/1.9.0/jquery.js"></script>
<title>挑戰題</title>
</head>

<body>
<ul>
<li>0</li>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
<li>7</li>
</ul>
<a id="btn" onclick="cli()">簡化</a>
</body>
<script>
$(function cli(){
$("#btn").css("cursor","pointer");
if($("#btn").html()=="簡化"){
var ran1=parseInt(Math.random()*7);
var ran2=parseInt(Math.random()*7);
var ran3=parseInt(Math.random()*7); //①從0~6中生成3個隨機數完成
if(ran1!=ran2&&ran1!=ran2&&ran2!=ran3){ //②判斷3個隨機數是否相等,不相等則執行操作。
$('li:eq('+ran1+')').css('display','none');
$('li:eq('+ran2+')').css('display','none');
$('li:eq('+ran3+')').css('display','none');
$("#btn").html("更多");
}else{//③3隨機數有重復,則重新執行函數。
cli();
}
}

else{
$("li:hidden").css('display','list-item');
$("a:contains('更多')").html("簡化");
}

});

</script>
</html>

收獲一:

復制代碼
代碼如下:

var
ran=parseInt(Math.random()*(max-min+1)+min); //生成一個[min,max]區間的一個隨機數

收獲二:

反思了下,決定寫個在一定[min,max]區間,生成n個不重復的隨機數的封裝函數。

思路一:先生成n個[min,max]區間隨機數,比較是否重復,如重復則返回,再次執行。

演示地址:http://jsbin.com/yupuyehuqa/edit?html,js,output

封裝函數:

function my_ran(n,min,max){
var arr=[];
for(i=0;i<n;i++){
arr[i]=parseInt(Math.random()*(max-min+1)+min);
}
for(i=0;i<n;i++){
for(j=i+1;j<n;j++){
if(arr[i]==arr[j]){
my_ran(n,min,max);
return fault;
}
}
}
return arr;
}

思路二:生成第i個[min,max]區間的隨機數,並與之前i-1個數比較,如有重復,令i=i-1;重復生成第i個隨機數。

演示地址:http://jsbin.com/zorunotosi/edit?html,js,output

封裝函數:
function my_ran2(n,min,max){
var arr=[];
for(i=0;i<n;i++){
arr[i]=parseInt(Math.random()*(max-min+1)+min);
for(j=0;j<i;j++){
if(arr[i]==arr[j]){
i=i-1;
break;
}
}
}
return arr;
}

思路三:生成[min,max]區間的一個順序數組,打亂數組,輸出前n個值。

演示地址:http://jsbin.com/zorunotosi/edit?html,js,output

封裝函數:
function my_ran3(n,min,max){
var arr=[];
var arr2=[];
for(i=0;i<max-min+1;i++){
arr[i]=i+min;
}
for(var j,x,i=arr.length;i;j=parseInt(Math.random()*i),x=arr[--i],arr[i]=arr[j],arr[j]=x);
for(i=0;i<n;i++){
arr2[i]=arr[i];
}
return arr2;
}

思路四:生成[min,max]區間的一個順序數組,從中隨機選出一個值,然後在數組中刪掉這個值,再選第二個隨機值。

演示地址:http://jsbin.com/zorunotosi/edit?html,js,output

封裝函數:
function my_ran4(n,min,max){
var arr=[];
var arr2=[];
for(i=0;i<max-min+1;i++){
arr[i]=i+min;
}
for(i=0;i<n;i++){
var x=parseInt(Math.random()*arr.length);
arr2[i]=arr[x];
for(j=x;j<arr.length;j++){
arr[j]=arr[j+1];
}
arr.length=arr.length-1;
}
return arr2;
}

㈢ JS中,輸出1-10之間的隨機整數,用Math.random()咋搞呢

使用Math.floor(Math.random()*10+1)函數實現。

1、floor():返回小於等於x的最大整數。

2、函數返回一個浮點, 偽隨機數在專范圍[0,1),也就屬是說,從0(包括0)往上,但是不包括1(排除1)。實現將初始種子選擇到隨機數生成演算法,它不能被用戶選擇或重置。

實例演示如下:

1、html代碼如下,綁定生成函數:

㈣ 怎麼樣用JS的隨機數生成函數生成1~6之間的某一個整數

用JS的隨機數生成函數random()配合其他數學函數可以限制隨機數的取值。

JS的隨機數函數及相關函數:回

  1. Math.random(); 結果為0-1間的一個答隨機數(包括0,不包括1) 。

  2. Math.floor(num); 參數num為一個數值,函數結果為num的整數部分。

  3. Math.ceil(n); 返回大於等於n的最小整數。

  4. Math.round(num); 參數num為一個數值,函數結果為num四捨五入後的整數。

因此可以用以上函數配合實現取1-6的隨機數:

1,用Math.ceil(Math.random()*6);時,主要獲取1到6的隨機整數,取0的幾率極小。

2,用Math.round(Math.random()*5 + 1),可基本均衡獲取1到6的隨機整數,其中獲取最小值0和最大值6的幾率少一半。

3,用Math.floor(Math.random()*6 + 1);時,可均衡獲取1到6的隨機整數。
閱讀全文

與js裡面的隨機數相關的資料

熱點內容
ps入門必備文件 瀏覽:348
以前的相親網站怎麼沒有了 瀏覽:15
蘋果6耳機聽歌有滋滋聲 瀏覽:768
怎麼徹底刪除linux文件 瀏覽:379
編程中字體的顏色是什麼意思 瀏覽:534
網站關鍵詞多少個字元 瀏覽:917
匯川am系列用什麼編程 瀏覽:41
筆記本win10我的電腦在哪裡打開攝像頭 瀏覽:827
醫院單位基本工資去哪個app查詢 瀏覽:18
css源碼應該用什麼文件 瀏覽:915
編程ts是什麼意思呢 瀏覽:509
c盤cad佔用空間的文件 瀏覽:89
不銹鋼大小頭模具如何編程 瀏覽:972
什麼格式的配置文件比較主流 瀏覽:984
增加目錄word 瀏覽:5
提取不相鄰兩列數據如何做圖表 瀏覽:45
r9s支持的網路制式 瀏覽:633
什麼是提交事務的編程 瀏覽:237
win10打字卡住 瀏覽:774
linux普通用戶關機 瀏覽:114

友情鏈接