草庐IT

php - 没有重复的随机数生成

我必须在网页中显示一些横幅。横幅的数量将在10个以内(最多10个)。我可以在数据库中设置横幅数量和每个横幅文件夹。横幅图像根据类别存储在单独的服务器文件夹中。横幅显示在列中。我的代码是,这里,long1,long2,...long10是来自数据库的目录名$array=array();for($n=1;$n"alt=""name=""/>}例如:如果数据库中设置了7个横幅,我必须显示来自不同或相同文件夹的7个横幅。(有些横幅将来自同一文件夹)。每次显示网页时,我都需要避免出现重复的横幅广告。我分配了一个数组来存储每个随机数。我需要更改代码中的任何内容吗?有什么想法吗?谢谢!

php - suhosin.mt_srand.ignore 在 PHP 中持续随机排列数组的解决方法?

我有一个PHP脚本,它需要随机化一个具有一致结果的数组,因此它可以向用户显示前几项,然后他们可以根据需要从相同的随机集合中提取更多结果。我目前使用的是这个(我相信基于FisherYates算法):functionshuffle(&$array,$seed){mt_srand($seed);for($a=count($array)-1;$a>0;$a--){$b=mt_rand(0,$a);$temp=$array[$a];$array[$a]=$array[$b];$array[$b]=$temp;}}这在我的本地安装上运行良好,但它需要运行的服务器安装了Suhosin,它覆盖了mt_

c++ - srand(time(NULL)) 产生相似的结果

这个问题在这里已经有了答案:rand()functioninCisnotrandomevenwhenseeded(2个答案)关闭5年前。我不明白为什么srand()在运行之间生成如此相似的随机数!我正在尝试运行以下代码srand(time(NULL));intx=rand();cout然而,我得到的不是一个合适的随机数,而是几乎相同的数字,它随着时间的推移增长缓慢。所以我得到如下数字:11669、11685、11701、11714、11731。我做错了什么?我使用的是VisualStudio2010SP1。好的,srand()真的有那么简单吗?我的意思是怎么会有人称它为随机函数?sra

c++ - 为什么 rand() 在此 for 循环中使用 srand(time(null)) 返回相同的值?

我有以下代码#include#include"time.h"usingnamespacestd;voidprintRandomNumber(){srand(time(NULL));cout输出是相同的数字重复六次,我希望它打印出混合数字。 最佳答案 因为您每次都使用相同的值播种-time只有秒级精度,而且我很确定您的计算机可以在一秒钟内处理这六个循环迭代。;-]种子一次,在程序的开头。 关于c++-为什么rand()在此for循环中使用srand(time(null))返回相同的值?,我

c++ - 在哪里初始化随机种子以通过多个随机模块使用?

所以,每次我开发一些大的东西,将多个模块组合在一起构建最终功能时,我一直在想同一个问题:如果超过1个模块需要使用随机函数,在哪里初始化随机种子?如果我有一个需要随机的类(例如,类通过使用self实现的快速排序对输入数组进行排序来初始化自身,所以我需要一个随机数来选择主元),我通常有一个私有(private)的staticboolisRandOn;变量,所以在我开始选择随机基准之前,我会检查该变量并执行srand(time(NULL));如果随机尚未打开。如果我在一个命名空间中有大量的实用函数,我会做一件非常相似的事情:我将这样一个变量放在我的utils库中的一个匿名命名空间中,并或多或

c++ - 如何直接获取 rand() 序列中的第 n 个数字而不必调用 rand() n 次?

根据我的理解,使用特定种子设置srand会导致对rand()的调用序列每次为该特定种子生成相同的数字系列:例如:srand(seed1);rand()//firstnumber(e.g.:42)rand()//secondnumber(e.g:17)srand(seed1)rand()//firstnumber(sameasabove(42))rand()//secondnumber(sameasabove(17))有没有办法直接获取序列中的第n个数字,而不必调用rand()n次?例如,如果我想要系列中的第17个随机数,我想在一次调用中获得该数字,而不是调用rand()17次。我无法预

c++ - 为什么 rand() 在以 1 和 UINT_MAX 为种子时产生相同的值?

这是一些代码:#includeintmain(){srand(1);std::cout这会产生以下输出:1680716807为什么这两个种子会产生相同的结果?它们在连续的rand()调用中产生的整个值序列也是相同的。可能值的范围太大,这不可能是纯巧合。是吗:rand()的执行意外(如果是这样,我很好奇那可能是什么)通过设计(如果是,为什么?)(可能相关:种子10、100、1000、10000和100000分别产生168070、1680700、16807000、168070000和1680700000。) 最佳答案 一个非常简单可用的

c++ - 64 位随机生成器种子

我目前正在运行一个具有8个以上管道(线程)的多线程模拟应用程序。这些管道运行非常复杂的代码,该代码取决于种子生成的随机序列。然后将序列归结为单个0/1。我希望这个“随机处理”在将种子从主线程传递到处理管道后是100%确定性的。因此,我可以在第二次运行中复制结果。所以,例如:(我有这个编码并且它有效)Pipe1->Seed:123->Result:0Pipe2->Seed:123->Result:0Pipe3->Seed:589->Result:1当我需要运行100M或更多这些进程然后对结果进行平均时,问题就出现了。可能100M中只有1个是1,其余都是0。很明显,我无法使用32位种子对1

c++ While循环终止与功能

因为它早些时候工作得很好,所以我抓耳挠腮,但是当我去添加一些其他功能时,我的程序突然崩溃了,我无法让它恢复到原来的状态。类(class)让我编写了一个石头/剪刀布程序来对抗计算机,任何关于为什么循环不断终止自身的帮助都会很棒#include#include#includeusingnamespacestd;voidRPSout(char);intRPScomp();intmain(){charchoice;intendit=0;while(endit==0){cout>choice;RPSout(choice);if(choice=='Q'||'q'){endit=1;}}return

C++ rand 和 srand 在不同的机器上得到不同的输出

我想生成一个随机整数,所以我使用了C++rand(void)和srand(int)函数:intmain(){srand(1);cout好的,它符合我的需要。每次我执行它都会得到相同的结果,我喜欢它!但有一个问题。当我在我的计算机上执行它时,我得到16807作为输出。但是当我在另一台机器上执行时,我得到了1804289383。我知道rand()和srand(int)有一个与此类似的简单实现:staticunsignedlongintnext=1;intrand(void)//RAND_MAXassumedtobe32767{next=next*1103515245+12345;retur