【问题标题】:Random Value in phpphp中的随机值
【发布时间】:2013-07-17 13:07:20
【问题描述】:

我使用 php 中的 rand。下面的脚本运行完美,但我的问题是优先考虑数组中的一个值(显示多次)。例如,它随机显示 100 次值,是否可以使用 rand 使 0 到 99 次回显 dofollow 和 1 次显示 nofollow

<?php
$input_nofollow = array("nofollow", "dofollow");
        $random = rand(0, 1);
        echo $input_nofollow[$random];
?>

任何建议都会很棒。

【问题讨论】:

  • 对不起什么?你想要一个简单的 for 循环吗?
  • 如果你有这么多逻辑,那这不可能是随机的!

标签: php arrays random


【解决方案1】:
$random = rand(0, 100);
$selected_key = 0;
if($random < 90) $selected_key = 1;
else $selected_key = 0;

echo $input_nofollow[$selected_key];

这使您有大约 90% 的机会获得索引 1。

【讨论】:

  • +1 感谢您的精彩回复,我所做的唯一更改是 $random
  • 是的,我的错。我已经更改了顺序。
【解决方案2】:

听起来您正在寻找 shuffle,而不是随机生成器。创建一个99个“a”和一个“b”的数组,shuffle它,按顺序输出。

或者生成一个介于 1 和 100 之间的随机数,使用计数器循环,如果计数器等于随机数输出“b”,否则为“a”。

【讨论】:

    【解决方案3】:

    试试这样的:

    <?php
        $input_nofollow = array("nofollow", "dofollow");
    
        $random = rand(0, 100);
        $i = 0;
        while (1 /* Your Condition */ )
            if (++$i > 100) {
                $i = 0;
                $random = rand(0, 100);
            }
    
            if ($i == $random)
                echo $input_nofollow[0];
            else
                echo $input_nofollow[1];
        }
    ?>
    

    【讨论】:

      猜你喜欢
      • 2019-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-07
      • 2017-09-21
      • 2016-01-17
      • 1970-01-01
      • 2015-12-22
      相关资源
      最近更新 更多