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

JavaScript generiert sich nicht wiederholende Zufallszahlen_Javascript-Fähigkeiten

WBOY
WBOYOriginal
2016-05-16 15:50:011597Durchsuche

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

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

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

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

Kernpunkt: Er hat nicht gesagt, welche 25edfb22a4f469ecb59f1190150159c6-Elemente ausgeblendet werden müssen, also hoffe ich, 8 25edfb22a4f469ecb59f1190150159c6-Elemente aufzulisten und auf Vereinfachen zu klicken, um 3 der ersten 7 25edfb22a4f469ecb59f1190150159c6-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>

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;
}

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;
}

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;
}

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;
}

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.

Stellungnahme:
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