我想生成0到1000之间永远不会重复的唯一随机数(即6不会出现两次),但这并不是像以前的值的O(N)搜索那样.这可能吗?
我正在构建一个网站,每次刷新页面时都会随机显示一个yelp列表.yelp搜索api返回数组中的20个列表.现在,我正在使用PHP的函数rand(0,19)在每次刷新页面时生成一个随机列表($ businesses [rand(0,19)]).
有人可以让我使用更智能的方法进行随机化吗?我想在重复之前显示所有20个列表.处理此问题的首选方法是什么?
以下答案不起作用,因为每次刷新页面时都会重新创建数字.我猜我需要存储我已使用过的数字?
$numbers = range(0, 19);
shuffle($numbers);
Run Code Online (Sandbox Code Playgroud)
// Handle Yelp response data
$response = json_decode($data);
$RANDOM = rand(1,19);
$business = $response->businesses;
echo "<img border=0 src='".$business[$RANDOM]->image_url."'><br/>";
echo $business[$RANDOM]->name."<br/>";
echo "<img border=0 src='".$business[$RANDOM]->rating_img_url_large."'><br/>";
?>
Run Code Online (Sandbox Code Playgroud) 我想生成0到9范围内的四个随机数.使用Java Random类生成四个随机数很容易.
Random random = new Random();
int numbers[] = new int[4];
for(int i=0;i<4;i++){
numbers[i] = random.nextInt(10);
}
Run Code Online (Sandbox Code Playgroud)
有了这个,我可以得到四个数字的易象,数组9369,4702等.在这种情况下,有可能在四个数字被重复了许多可能性,我不想在这样的数字重复.
在这里,我想所有的四位数以上阵列是唯一的,这样我可以输出像9543,1234等.
为此,我想到了以下方式.
有没有比上述方法更好的方法,以便我可以轻松快速地获得四个独特的随机数?
任何建议都表示赞赏.