最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

javascript生成不重復的隨機數

 更新時間:2015年07月17日 10:34:34   投稿:hebedich  
這篇文章主要介紹了javascript在指定范圍內生成不重復的隨機數的方法和相關實例,有需要的小伙伴可以參考下。

題目來源:在慕課學習jQuery過程中一道測試題。

初始時:<ul>元素中僅顯示5個<li>元素,其中包含還包括最后一個<li>元素,<a>元素中的顯示"更多"字符.

當點擊"更多"鏈接時,自身內容變?yōu)?簡化",同時,<ul>元素中顯示全部的<li>元素.

當點擊"簡化"鏈接時,自身內容變?yōu)?更多",同時,<ul>元素中僅顯示包含最后一個<li>元素在內的5個元素.

核心點:他沒講需隱藏哪幾個<li>元素啊,那么我希望列出8個<li>元素,點簡化隨機隱藏前7個<li>元素中的3個。

思路:

①從0~6中生成3個隨機數。

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

③3隨機數有重復,則重新執(zhí)行函數。

實現:生成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.baidu.com/jquery/1.9.0/jquery.js"></script>
    <title>挑戰(zhàn)題</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個隨機數是否相等,不相等則執(zhí)行操作。
      $('li:eq('+ran1+')').css('display','none');  
      $('li:eq('+ran2+')').css('display','none');    
      $('li:eq('+ran3+')').css('display','none'); 
      $("#btn").html("更多");
      }else{  //③3隨機數有重復,則重新執(zhí)行函數。
        cli();
      }
      }
      
      else{
        $("li:hidden").css('display','list-item');
        $("a:contains('更多')").html("簡化");
      }
      
      });

  </script>
</html>

收獲一:

復制代碼 代碼如下:
var ran=parseInt(Math.random()*(max-min+1)+min); //生成一個[min,max]區(qū)間的一個隨機數

收獲二:

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

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

  演示地址: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]區(qū)間的隨機數,并與之前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]區(qū)間的一個順序數組,打亂數組,輸出前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]區(qū)間的一個順序數組,從中隨機選出一個值,然后在數組中刪掉這個值,再選第二個隨機值。

  演示地址: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正則表達式學習之貪婪和非貪婪模式實例總結

    JS正則表達式學習之貪婪和非貪婪模式實例總結

    這篇文章主要介紹了JS正則表達式學習之貪婪和非貪婪模式用法,結合實例形式總結分析了JS正則表達式中貪婪模式與非貪婪模式的具體功能、使用方法與相關注意事項,需要的朋友可以參考下
    2016-12-12
  • js中把JSON字符串轉換成JSON對象最好的方法

    js中把JSON字符串轉換成JSON對象最好的方法

    這篇文章主要介紹了js中把JSON字符串轉換為JSON對象最好的方法,需要的朋友可以參考下
    2014-03-03
  • JavaScript設計模式之職責鏈模式應用示例

    JavaScript設計模式之職責鏈模式應用示例

    這篇文章主要介紹了JavaScript設計模式之職責鏈模式,結合實例形式分析了javascript責任鏈模式的概念、原理、使用方法及相關操作注意事項,需要的朋友可以參考下
    2018-08-08
  • js表達式與運算符簡單操作示例

    js表達式與運算符簡單操作示例

    這篇文章主要介紹了js表達式與運算符簡單操作,結合實例形式分析了JavaScript表達式與運算符的基本算數運算、邏輯運算、比較運算等相關操作技巧,需要的朋友可以參考下
    2020-02-02
  • canvas實現鐘表效果

    canvas實現鐘表效果

    本文主要分享了canvas實現鐘表效果的示例代碼。具有很好的參考價值,下面跟著小編一起來看下吧
    2017-02-02
  • JavaScript網頁定位詳解

    JavaScript網頁定位詳解

    本篇文章主要是對JavaScript網頁定位進行了詳細的介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2014-01-01
  • Js的Array數組對象詳解

    Js的Array數組對象詳解

    這篇文章主要針對Js的Array數組對象為大家進行詳細的講解,感興趣的小伙伴們可以參考一下
    2016-02-02
  • 基于JS實現飛機大戰(zhàn)游戲的示例代碼

    基于JS實現飛機大戰(zhàn)游戲的示例代碼

    這篇文章主要為大家詳細介紹了如何利用JS實現飛機大戰(zhàn)游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • 詳解BootStrap中Affix控件的使用及保持布局的美觀的方法

    詳解BootStrap中Affix控件的使用及保持布局的美觀的方法

    Affix是BootStrap中的一個很有用的控件,他能夠監(jiān)視瀏覽器的滾動條的位置并讓你的導航始終都在頁面的可視區(qū)域。本文重點給大家介紹BootStrap中Affix控件的使用及保持布局的美觀的方法,感興趣的朋友一起看看吧
    2016-07-07
  • JS獲取本地文件并進行網絡傳輸的代碼詳解

    JS獲取本地文件并進行網絡傳輸的代碼詳解

    在web中如想要獲取用戶計算機上的文件我們通常會用到的方法是通過一個表單元素<input type="file">操作用戶選擇的文件,本文小編給大家介紹了JS獲取本地文件并進行網絡傳輸的方法,需要的朋友可以參考下
    2024-08-08

最新評論

襄汾县| 宝山区| 大足县| 克东县| 皋兰县| 巧家县| 灵丘县| 龙岩市| 西峡县| 丹棱县| 宜川县| 横山县| 共和县| 吴江市| 葵青区| 荥经县| 江都市| 岗巴县| 鞍山市| 达州市| 丹寨县| 宁津县| 遂平县| 平谷区| 弥渡县| 卫辉市| 班戈县| 大埔区| 两当县| 建平县| 滁州市| 赫章县| 绵竹市| 财经| 临澧县| 台山市| 垣曲县| 武宁县| 伽师县| 涟水县| 射阳县|