相关疑难解决方法(0)

O(1)中的唯一(非重复)随机数?

我想生成0到1000之间永远不会重复的唯一随机数(即6不会出现两次),但这并不是像以前的值的O(N)搜索那样.这可能吗?

language-agnostic random algorithm math

174
推荐指数
9
解决办法
9万
查看次数

生成随机数而不重复

我正在构建一个网站,每次刷新页面时都会随机显示一个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)

php random api algorithm

13
推荐指数
1
解决办法
5万
查看次数

从0-9获得四个唯一随机数的最佳方法是什么?

我想生成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等.

为此,我想到了以下方式.

  1. 生成随机数并指定为第一个数字.
  2. 生成一个随机数并检查第一个数字,如果不同的指定为第二个数字,则再次生成随机数并重复,依此类推.

有没有比上述方法更好的方法,以便我可以轻松快速地获得四个独特的随机数?

任何建议都表示赞赏.

java random numbers

8
推荐指数
4
解决办法
2040
查看次数

标签 统计

random ×3

algorithm ×2

api ×1

java ×1

language-agnostic ×1

math ×1

numbers ×1

php ×1