2011-02-26 47 views
2

我有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,讓2,如果3,重新隨機!

+1

你可能將無法使用JavaScript來做到這一點。使用PHP,你可能需要在'$ _SESSION'中存儲最後一張圖片 – drudge 2011-02-26 00:17:24

+0

可以使用cookie ...這是我的想法去 – menardmam 2011-02-26 00:37:23

回答

5

非常相似@喬恩·斯奈德的回答,但使用$_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; 
?> 
+0

每次頁面重新加載時,會話開始將被調用,是否可以? – menardmam 2011-02-26 00:52:07

+0

是的,沒關係。從手動輸入:'session_start()創建一個會話或恢復當前的'' – drudge 2011-02-26 00:56:19

-1

如果您可以共享您當前用於生成隨機數的代碼,可能會有所幫助。即使您生成真正的隨機數字,完全有可能在5次重新加載中看不到全部5張圖像。事實上,這是不太可能的。

下面是一些僞代碼,這可能有助於:

int lastRandomNumber = -1; 

function getRandom() : int { 
int temp = rand(); 
while (temp == lastRandomNumber && lastRandomNumber != -1) { 
    temp = rand(); 
} 
lastRandomNumber = temp; 
return lastRandomNumber; 
} 

這將保持到最後隨機生成的號碼,每次你問一個新它將繼續再生,直到它到達一個新值時的參考。然而,根據你的發電機,你很可能會陷入一個很長的循環。

編輯:爲什麼這次被拒絕?

2

如果你真的希望它是隨機的,你會等相同數量的多次連續 - 尤其是很小的範圍內的1-5

你可以專門代碼記得最後一個號碼,如果新號碼匹配,再次生成 - 但實際上,隨機數就是這樣。

好,在技術上這是一個僞隨機數但你處理它什麼都沒有區別

+0

有可能,當瀏覽器重新加載HIT時,檢查CSS內容在瀏覽器內存的最後一頁的div中,它可以做到這一點嗎? – menardmam 2011-02-26 00:35:43

+0

Marc no它不是聯合國;上一頁已經專門記錄了某個地方的信息,供您檢索是JS或Cookies/Sessions服務器端的Cookie。網絡是無狀態的 - 你檢索的每個頁面都沒有任何其他頁面的直接知識 – Basic 2011-02-27 05:50:19

4

擲骰子。你曾經連續兩次甚至連續三次獲得相同的號碼嗎?你懷疑死亡的隨機性嗎?

有了5張圖片,你有20%的機會,這次的圖像會和最後一張一樣。你不想隨機分配。你只是想每次旋轉它們。我們保證不會告訴您的用戶它並不是真正的隨機;)

+0

擊敗我一秒鐘,即將說同樣的... 5張圖片,每次刷新都不同,它不是一個「隨機」序列,期。當數字變得更高時,這是另一回事。 – 2011-02-26 00:26:16

+0

比我慢5分鐘,但還有3票。猜你只是更有說服力:P – Basic 2011-02-26 00:35:40

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>'; 
+0

請注意,我不要求請求,用戶HIT瀏覽器重新加載按鈕...我什麼都不做! – menardmam 2011-02-26 00:34:24