我有一个数组,其中有18个值,我使用$array[rand(0,17)]
选择了随机值。我将这些随机选择的值在页面上彼此相邻放置。在数组中有6组值,我不想在页面上彼此相邻放置。有没有什么办法可以检测出这些线对是否在一起,并选择新的值,因为这样做可以使用当从数组中选择随机值时,确保两个确定的值不会出现在一起
回答
警告:你确实知道你不会在没有可能的数组排序的情况下得到任何退化的情况吗?例如,如果你不允许对[1,2]或[2,1],你得到的数组是[1,1,1,1,1,1,1,1,1,2,2 ,2,2,2,2,2,2,2],你运气不好。没有办法以你想要的方式显示数组,下面描述的方法永远不会终止。
我会同时使用shuffle($array)
,然后遍历洗牌后的数组一个项目,以找出任何值是否为“不兼容”与之前的项目。如果是这样,只需重新洗牌阵列,然后再试一次。你无法预测需要多少次尝试才能得到一个可以工作的混洗数组,但所花费的时间应该可以忽略不计。
要检测两个值是否兼容,我建议制作一个包含所有不兼容对的数组。例如,如果你不希望有连续对1和3或2和5,那么你的数组将是:
$incompatible = array(
array(1,3),
array(2,5));
然后你会遍历您的洗牌阵列类似:
for ($i=1; i<count($array)-1; i++;) {
$pair = $array[i, i+1]; // this is why the for loop only goes to the next-to-last item
if in_array($pair, $incompatible) {
// you had an incompatible pair in your shuffled array.
// break out of the for loop, re-sort your array, and try again.
}
}
// if you get here, there were no incompatible pairs
// so go ahead and print the shuffled array!
谢谢。这真的很有帮助 – Amja 2012-03-11 22:08:34
或与unset()
一起使用,以删除键或由Session使用下一个跳过。
我不知道我将如何impliment。为了使它更简单,让我们使用这样的数组:array('First','Second','Third','Fourth');我想要做的是不允许第一次和第二次或第三次和第四次在被随机选择后回显出来时彼此相邻 – Amja 2012-03-11 21:30:53
这个答案与这个问题有什么关系?你们有没有分享一些我们其他人不知道的背景知识(比如家庭作业)? – 2012-03-11 21:51:18
- 1. 从数组中选择一个随机值给出未定义
- 2. 如何从TestComplete中的数组中选择一个随机值?
- 3. 从数组中选择3个不同的随机值
- 4. 从数组中选取一个不等于当前值的随机值
- 5. 从数组中选择一个随机值
- 6. 如何确保两个选择菜单值与jQuery不一样?
- 7. 从分组数据中随机选择一组观察值(行)
- 8. 从表中选择一个随机值,基于另一个随机值
- 9. 如何从jquery的数组值100中选择随机5值?
- 10. 当其他列有两个特定值时选择一个值
- 11. 序言:如何从一组随机数中选择最大值
- 12. 不能从随机选择的HashMap中删除一个值
- 13. Html.DropDownListFor不会选择正确的值
- 14. 如何从PHP中的数组中选择随机值?
- 15. 当选择不同的值时,组合框不会更改值
- 16. 无需在JavaScript中选择两次的随机数组选择
- 17. MySQL为每个分组的列值选择一个随机行
- 18. 从JavaScript对象中随机选择值
- 19. 如何从一组随机数中进行随机选择?
- 20. PHP:从关联数组中选择随机值
- 21. 当我选择多个选中的复选框时,不会保留所有值
- 22. 如何选择一个随机数组,然后在THAT数组中选择一个随机索引?
- 23. vue.js从数组中选择一个随机选项为默认
- 24. PHP在随机随机混合函数中匹配两个不同数组中的两个值
- 25. Excel的日期选择器不会输出正确的价值
- 26. Php可变随机确定值
- 27. 如何从DataFrame中选择确切数量的随机行
- 28. Java:从枚举中选择一个随机值?
- 29. 如何确保数组中的随机插入数字不会重复?
- 30. 确定在R数据帧中出现特定次数的值
你是什么意思的“套价值”? – Neil 2012-03-11 21:29:37
想象一下你有一个包含四个单词的数组:一两两三。我希望它是这样的,一个和两个不能在页面上彼此相邻 – Amja 2012-03-11 21:49:46