我有5个jpg,名为01.jpg,02.jpg ..... 05.jpg。我有一个小脚本,生成1-5之间的数字,并购买与之相关的jpg ....很好......但每次我重新加载页面时,图片“应该”是随机的,并且如此不同,但只有5个图像,我得到相同的图像重新加载“更多”我要做什么....所以问题是...热,以确保,在网页的重新加载随机数应该是1-5之间和之前的第二次不一样......所以我一定会看到连续5次重新加载5张图片!....
php的ajvascript请
这是代码:
<style type="text/css">
#photo { background-image: url(http://www.something/pano-0<?php echo mt_rand (1,5) ?>.jpg); }
</style>
请注意: 对于那些告诉它是序列的人...不,我喜欢随机......至少不要选择相同的
如果#3显示,你可以随机...你可以拥有1,2,3,4,5,如果是3,则获得2,重新随机!
答案 0 :(得分:5)
与@Jon Snyder的答案非常相似,但使用$_SESSION
代替$_GET
:
<?php
// initialize session
session_start();
// array of possible images
$images = array('01.jpg', '02.jpg', '03.jpg', '04.jpg', '05.jpg');
// check if user has seen an image before
$last = isset($_SESSION['last_img']) ? $_SESSION['last_img'] : -1;
// generate a random number that isn't the same as $last
do { $num = rand(0, count($images)-1); } while ($num == $last);
// display image
echo '<img src="' . $images[$num] . '">' . PHP_EOL;
// save last image in $_SESSION
$_SESSION['last_img'] = $num;
?>
答案 1 :(得分:4)
掷骰子。你有没有连续两次甚至三次获得相同的数字?你怀疑骰子的随机性吗?
如果有5张图像,则此次图像有20%的可能性与最后一张图像相同。您不希望随机分发。你只想每次都旋转它们。我们保证不会告诉您的用户它并非真正随机;)
答案 2 :(得分:3)
当您请求下一个图像时,请附加一个查询字符串参数,其中包含当前图片的ID。然后在你的php代码中获取值并使用它来生成一个不一样的随机数。
http://yourdomain/randomPicture.php?last=1
<?php
$last = $_GET['last'];
do {
$next = rand(5);
} while( $next != $last);
echo '<img src="/picture'.$next.'.jpg" />';
echo '<a href="/randomPicture.php?last='.$next.'" >next</a>';
答案 3 :(得分:2)
如果你真的希望它是随机的,你会连续多次使用相同的数字 - 特别是在1-5的小范围内
您可以专门编码以记住最后一个数字,如果新数字匹配,则再次生成 - 但实际上,随机数就是那个。
好的,从技术上来说这是一个伪随机数,但对于你所处理的它没有任何区别
答案 4 :(得分:-1)
如果您可以共享当前用于生成随机数的代码,则可能会有所帮助。即使你正在生成真正随机的数字,也完全有可能在5次重新加载中看不到所有5个图像。事实上,这是不太可能的。
这是一些可能有帮助的伪代码:
int lastRandomNumber = -1;
function getRandom() : int {
int temp = rand();
while (temp == lastRandomNumber && lastRandomNumber != -1) {
temp = rand();
}
lastRandomNumber = temp;
return lastRandomNumber;
}
这保留了对最后一个随机生成的数字的引用,每次你要求一个新数字时,它将一直重新生成,直到它获得一个新值。但是,根据您的发电机,您不太可能陷入很长的环路。
编辑:为什么这被投票了?