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

以1到100为固定区间

生成两个数 尽量不用递归

阅读 6.4k
7 个回答

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

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

楼主应该是系统用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 ?>

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]);
var a, b; a = Math.random(); do{ b = Math.random(); } while(b == a)
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题