Heim > Web-Frontend > js-Tutorial > JavaScript generiert sich nicht wiederholende Zufallszahlen_Javascript-Fähigkeiten

JavaScript generiert sich nicht wiederholende Zufallszahlen_Javascript-Fähigkeiten

WBOY
Freigeben: 2016-05-16 15:50:01
Original
1641 Leute haben es durchsucht

Quelle der Frage: eine Testfrage beim Erlernen von jQuery im MOOC.

初始时:<ul>元素中仅显示5个<li>元素,其中包含还包括最后一个<li>元素,<a>元素中的显示"更多"字符.

当点击"更多"链接时,自身内容变为"简化",同时,<ul>元素中显示全部的<li>元素.

当点击"简化"链接时,自身内容变为"更多",同时,<ul>元素中仅显示包含最后一个<li>元素在内的5个元素.

Nach dem Login kopieren

Kernpunkt: Er hat nicht gesagt, welche

  • -Elemente ausgeblendet werden müssen, also hoffe ich, 8
  • -Elemente aufzulisten und auf Vereinfachen zu klicken, um 3 der ersten 7
  • -Elemente auszublenden . .

    Dinge:

    ① Generieren Sie 3 Zufallszahlen von 0 bis 6.

    ② Bestimmen Sie, ob die drei Zufallszahlen gleich sind. Wenn sie nicht gleich sind, führen Sie den Versteckvorgang durch.

    ③3 Wenn die Zufallszahl wiederholt wird, wird die Funktion erneut ausgeführt.

    Implementierung: Generieren Sie eine Zufallszahl von 0 bis 6

    Code kopieren Der Code lautet wie folgt:
    var ran1=parseInt(Math.random()*7 ); / /Math.random() generiert eine Zufallszahl in [0,1)

    Vollständiger Code:

    <!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>挑战题</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>
    
    
    Nach dem Login kopieren

    Ernte 1:

    Code kopieren Der Code lautet wie folgt:
    var ran=parseInt(Math.random()*( max-min 1) min); //Generiere eine Zufallszahl im [min,max]-Intervall

    Ernte 2:

    Nach einigem Nachdenken habe ich beschlossen, eine Paketfunktion zu schreiben, die n sich nicht wiederholende Zufallszahlen innerhalb eines bestimmten [min, max] Intervalls generiert.

    Idee 1: Generieren Sie zunächst n Zufallszahlen im Intervall [min, max], vergleichen Sie, ob sie wiederholt werden, und geben Sie sie zurück, wenn sie wiederholt werden, und führen Sie sie erneut aus.

    Demonstrationsadresse: http://jsbin.com/yupuyehuqa/edit?html,js,output

    Umschlossene Funktion:

    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;
    }
    
    
    Nach dem Login kopieren

    Idee 2: Generieren Sie die i-te Zufallszahl im [min, max]-Intervall und vergleichen Sie sie mit der vorherigen i-1-Zahl. Wenn es Wiederholungen gibt, legen Sie i=i-1 fest. Zufallszahl.

    Demonstrationsadresse: http://jsbin.com/zorunotosi/edit?html,js,output

    Umschlossene Funktion:

    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;
    }
    
    
    Nach dem Login kopieren

    Idee 3: Erzeugen Sie ein sequentielles Array im Intervall [min, max], verschlüsseln Sie das Array und geben Sie die ersten n Werte aus.

    Demonstrationsadresse: http://jsbin.com/zorunotosi/edit?html,js,output

    Umschlossene Funktion:

    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;
    }
    
    
    Nach dem Login kopieren

    Idee 4: Erzeugen Sie ein sequentielles Array im Intervall [min, max], wählen Sie daraus zufällig einen Wert aus, löschen Sie dann diesen Wert im Array und wählen Sie dann einen zweiten zufälligen Wert aus.

    Demonstrationsadresse: http://jsbin.com/zorunotosi/edit?html,js,output

    Umschlossene Funktion:

    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;
    }
    
    
    Nach dem Login kopieren

    Es ist zu spät, ich werde das Format morgen anpassen, wenn ich Zeit habe.

    Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, er gefällt Ihnen allen.

  • Verwandte Etiketten:
    Quelle:php.cn
    Erklärung dieser Website
    Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
    Beliebte Tutorials
    Mehr>
    Neueste Downloads
    Mehr>
    Web-Effekte
    Quellcode der Website
    Website-Materialien
    Frontend-Vorlage