从阵列中选择随机值

时间:2014-02-14 10:11:55

标签: arrays sorting

我有一个包含5个数字的数组,并希望随机选择“任意3”数字 从我的数组生成下面的结果。我看了,找不到代码
这将重现确切的结果。我正在考虑一个厕所 功能将是最好的选择,但我如何去做,任何帮助,(JavaScript,
Java,php)将不胜感激

var myArray = ["1","2","3","4","5"];  
var result = myArray.slice(); 

for (i=0; i < result; i++) {
  console.log(myArray[i]);
}

Results:
1 2 3
1 2 4
1 2 5
1 3 4
1 3 5
1 4 5
2 3 4
2 3 5
2 4 5
3 4 5

5 个答案:

答案 0 :(得分:0)

我认为你需要这样的东西:http://phpfiddle.org/main/code/bpg-8ix

你可以把它放在一个函数中,然后在for循环中调用它多次。

答案 1 :(得分:0)

对于php,您可以在HERE

的帮助下使用array_rand功能

你也可以使用:

shuffle($array)然后array_rand($array,3)

答案 2 :(得分:0)

尝试我的PHP示例:

<?php
$a=array("1","2","3","4","5");

for($i=1;$i<10;$i++){
$random_keys=array_rand($a,3);
echo $a[$random_keys[0]].$a[$random_keys[1]].$a[$random_keys[2]];
echo "<br>";
}
?>

答案 3 :(得分:0)

你可以试试这个:

var myArray = ["1","2","3","4","5"];  

for (i=0; i < 3; i++) {
    console.log(myArray[Math.floor(Math.random() * (myArray.length - 1))]);
}
  • Math.random()返回0到1之间的浮点数
  • myArray.length 返回数组长度
  • Math.floor()舍入乘法结果

答案 4 :(得分:0)

以下是我要采取的措施:

  1. 创建一个数字为1到5的数组。
  2. 创建一个空结果数组,用于存放3个随机选择。
  3. 虽然结果数组的大小不是3,但请执行以下操作...
  4. ...从数字数组中选择一个随机数。
  5. ...只要该数字不在结果数组中,请将其添加到数组中。
  6. ...如果它已经在数组中,请继续挑选并检查,直到得到一个不在数组中的数据。
  7. 在PHP中,您可以采用以下方法:

    $numbers = array(1,2,3,4,5);
    
    // The for loop is just to show this algorithm run 10 times,
    // to demonstrate the "randomness" of the result.
    
    for ($i = 0; $i < 10; $i++) {
      $random_three = array();
      while(sizeof($random_three) < 3) {
        $random_pick = $numbers[array_rand($numbers)];
        while (in_array($random_pick, $random_three)) {
          $random_pick = $numbers[array_rand($numbers)];
        }
        array_push($random_three, $random_pick);
      }
    
      print implode($random_three, " ");
      print "\n";
    }
    

    输出(您的结果 会有所不同):

    2 5 1
    2 5 4
    3 1 5
    1 4 2
    3 2 5
    5 2 4
    4 2 3
    2 5 4
    1 4 5
    1 3 5