草庐IT

php - 在不使用 shuffle() 函数的情况下在 PHP 中随机化数组顺序的最佳方法是什么?

我在面试时被问到这个问题。面试官和我对正确答案是什么意见不一。我想知道是否有人有这方面的任何数据。更新:我应该提到严格禁止使用shuffle()...抱歉。 最佳答案 shuffle($arr);:)编辑:我应该澄清一下……我对最佳的定义不仅涉及算法效率,还涉及代码的可读性和可维护性。使用标准库函数意味着维护更少的代码,也意味着更少的阅读。除此之外,您还可以与博士教授就最佳“真随机”函数展开长达一年的辩论,因此总会有人在随机化问题上与您持不同意见。 关于php-在不使用shuffle()

PHP Shuffle 包含(编辑)文件

我正在尝试使用SHUFFLE函数随机显示FILE1.php或FILE2.php。这是我的代码:我遇到的问题-如果我不执行include'file1.php';而只是使用文本或代码,它工作正常。但是如果我随机播放INCLUDE函数,它会同时显示file1.php和file2.php。请帮忙。 最佳答案 当您将这两个文件分配给变量时,您就包括了这两个文件。包括从随机排列的数组中选择的文件。试试这个:$banner1='file1.php';$banner2='file2.php';$banners=array($banner1,$ban

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_

php - 设置随机播放,不重复

我有一个闪存卡数组,使用随机播放我输出了15张独特的卡片,每张3张用于5个不同的类别。我想做的是在同一个网页上为大约十几个人创建这些卡片集,但我无法弄清楚的部分是如何制作它以便每个完整的集都是独一无二的并且不会重复给任何其他用户的集合。带有简短说明的简短代码示例对我最有帮助。这是我根据需要修改的代码。确实没有太大变化。JustPicked:".$picks[0]."";$cardsstr=serialize($cards);$ballsstr=serialize($balls);$picksstr=serialize($picks);}?>Picks:'/>'/>'/>StartOve

php - 种子洗牌可以逆转吗?

采用这个函数,这是一个种子Fisher-Yates洗牌(顺序是随机的,但在给定相同种子的情况下可重现):functionseeded_shuffle(array&$items,$seed=false){$items=array_values($items);mt_srand($seed?$seed:time());for($i=count($items)-1;$i>0;$i--){$j=mt_rand(0,$i);list($items[$i],$items[$j])=array($items[$j],$items[$i]);}}这个算法可以逆向吗?也就是说,给定种子值和打乱后的数组,

php - 按值组随机排列数组

我正在寻找一种在PHP中按值组打乱数组的方法。例如,我有一个排序数组:Array([peter]=>100[paul]=>100[mary]=>50[andrew]=>50[bill]=>50[jason]=>10[sofia]=>10)我想这样洗牌:Array([paul]=>100[peter]=>100[mary]=>50[bill]=>50[andrew]=>50[jason]=>10[sofia]=>10)你知道一个聪明的方法来做到这一点,还是我必须编写一个肮脏的基于foreach的脚本? 最佳答案 有了这个用户定义的函数

php - 排序函数是否考虑多级数组中的叶节点?

下面这段代码的目的是创建一个多级数组,打印它,然后打乱它,再次打印它,并对数组进行排序。$arr=array(array(array('a','b','c')),array(array('d','e','f')),array(array('g','h','i')),);print_r($arr);shuffle($arr);print_r($arr);sort($arr);print_r($arr);现在我观察到的奇怪的事情是,当使用shuffle()时,它只会打乱正在打乱的数组的索引,它不会打乱,最里面的元素a,b,c到其他东西,但是当使用sort()函数时,它将数组排序回正常状态并

php 洗牌

我想用php创建随机桥牌的集合。我认为我可以将一副有序的纸牌编码为下面的字符串$deal(考虑到大写和小写时,我喜欢它有52个字母)。我发现了php函数str_shuffle。所以我想我可以做到以下几点:$pack='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';$shuffledPack=str_shuffle($pack);这给了我想要的输出。我的问题是:str_shuffle是否为每个可能的排列提供遵循均匀分布的输出? 最佳答案 在内部,str_shuffle()使

java - 洗牌(SPOJ/Interviewstreet)

这个问题以前有人问过,但是没有一个得到明确的回答,我试着编译我在这里找到的所有信息。如有必要,请随意合并/移动到另一个stackexchange站点。以下是我发现的与此相关的问题:SPOJ:CardShufflingCardShuffling[SPOJ]该问题最初作为InterviewstreetCodeSprint发布,但现在列为apracticeproblem.它也是portedtoSPOJ.这是问题陈述:HereisanalgorithmforshufflingNcards:1)ThecardsaredividedintoKequalpiles.2)ThebottomN/Kcar

java - 是否可以保证 java.util.Collections.shuffle() 背后的算法在未来的 Java 版本中保持不变?

在未来的java版本中,以下程序是否保证生成具有相同内容和顺序的列表?importjava.util.ArrayList;importjava.util.Arrays;importjava.util.Collections;importjava.util.List;importjava.util.Random;publicclassTest{publicstaticvoidmain(String[]args){Listlist=newArrayList(Arrays.asList("A","B","C","D"));Collections.shuffle(list,newRandom(