search

Home  >  Q&A  >  body text

php - 用最短的代码 生成两个不相等的随机数

以1到100为固定区间

生成两个数 尽量不用递归

迷茫迷茫2834 days ago575

reply all(7)I'll reply

  • PHPz

    PHPz2017-04-10 15:03:18

    inspired by @finallygo

    $range = range(1,100);
    

    1,

    shuffle($range);
    $first = $range[0];
    $second = $range[1];
    

    2,

    list($first, $second) = array_rand($range,2);
    //array_rand return index which starts from 0
    $first++; $second++;
    

    reply
    0
  • ringa_lee

    ringa_lee2017-04-10 15:03:18

    php语法不懂, 不过可以先生成两个随机数,两个相减作为第一个数, 相加作为第二个数

    reply
    0
  • PHP中文网

    PHP中文网2017-04-10 15:03:18

    楼主应该是系统用php实现吧(以下代码需要在php 5.3以上版本支持)

      1 <?php
      2         $a = new SplDoublyLinkedList();
      3         for($i=1;$i<=100;$i++) {
      4                 $a->push($i);
      5         }
      6         $fetch_size = 2;
      7         for($j=0;$j<$fetch_size;$j++) {
      8                 $index = rand() % count($a);
      9                 echo 'rand(' . $j . '):' . $a->offsetGet($index) . "\n";
                        $a->offsetUnset($index);
     10         }
     11 ?>
    
    

    reply
    0
  • 巴扎黑

    巴扎黑2017-04-10 15:03:18

    Random rnd = new Random();
    int a, b;
    a = rnd.Next(100) + 1;
    b = rnd.Next(99) + 1;
    if (a == b) b = 100;
    Console.WriteLine("{0} {1}", a, b);
    

    Random rnd = new Random();
    var arr = Enumerable.Range(1, 100).OrderBy(t => rnd.Next()).Take(2).ToArray();
    Console.WriteLine("{0} {1}", arr[0], arr[1]);
    

    reply
    0
  • 高洛峰

    高洛峰2017-04-10 15:03:18

    var a, b; a = Math.random(); do{ b = Math.random(); } while(b == a)
    

    reply
    0
  • 天蓬老师

    天蓬老师2017-04-10 15:03:18

    任意数列都可以叫做“随机数列”,区别只是概率分布不同,既然题主没提分布,我只能假设题主不在乎:
    $a=1; $b=2;
    完全满足题主需求。

    reply
    0
  • 迷茫

    迷茫2017-04-10 15:03:18

    楼上太取巧啦。还是我来个吧

    cat /dev/random

    http://zh.wikipedia.org/zh-cn//dev/random

    reply
    0
  • Cancelreply