尝试设置一个简单的嵌入框来回显url并随机化源锚文本。我用这个完成了两个:
<textarea class="cf" onclick="this.focus();this.select()" readonly="readonly">
<iframe src="<?php
$url="http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
echo $url;
?>" width="550px" height="400px" frameborder="0" scrolling="auto" allowtransparency="true"><a href="http://example.com/"><?php
$raAnchor = array(1 => 'example.com',
2 => 'http://example.com/',
3 => 'www.example.com',
4 => 'Click here');
$raNumber = count($raAnchor);
echo $raAnchor[rand(1, $raNumber)];
?></a></iframe>
</textarea>
问题:如何对数组中的随机结果进行加权以支持特定的回声?例如,希望example.com在50%的时间内回应。 我想我可以在这个数组中加入更多的example.com:
1 => 'example.com',
2 => 'example.com',
3 => 'example.com',
4 => 'example.com',
5 => 'http://example.com/',
6 => 'www.example.com',
7 => 'Click here');
似乎必须有一个更优雅的解决方案。我是编程的新手,而且我最不懂的PHP,如果你能指出我正确的方向,我可以从那里开始。
感谢。
答案 0 :(得分:1)
你可以这样做:
<?php
if(rand(1,2) == 1)
{
//Example goes here
}
else
{
//Everything else
}
?>
您可以按间隔执行相同的操作。例如:
<?php
$r = rand(1,10);
if($r >=1 && $r < 4)
{
/* 30% */
}
else if($r >=4 && $r < 9)
{
/* 60% */
}
else
{
/* 10% */
}
?>
答案 1 :(得分:1)
你总是可以生成1-100的随机数,然后如果&lt; = 40,则选择1.否则,再做一次随机选择2-7。
答案 2 :(得分:1)
只需选择一个较大的MAX值并以1/100为基础进行播放(更灵活;更随机)
if (($index = mt_rand(1,1000))<500) {
// yes, 50%
shuffle($arr);
return $arr[$index];
}
else {
// the other 50%
}
或只是随机:
shuffle($arr);
return $arr[ array_rand($arr) ];