2012-08-08 14 views
-3

可能重複:
select a variable randomly, but each varaible should be equally selected from an array選擇變量隨機的,但所有的變量應該從陣列均等地選擇

我需要一個函數(優選PHP),其隨機地選擇從一個可變一次一個數組,但滿足以下條件。假設我在數組中有3個變量。每次它應該選擇一個變量。但如果我執行了10次的函數,每個變量應至少選擇3次。即。所有的變量應該同樣選擇在最後我不能刪除或從數組中取消設置任何變量,因爲功能的執行發生在頁面刷新,所以該數組將包含所有值

看到的人,我知道我可以使用array_rand函數在PHP中隨機選擇一個變量。在這裏它不能保證我能達到上述邏輯(如果我執行這個功能10次,每個變量應該被選擇至少3次)。

其他方式我可以利用會議。但我要求看看是否有其他方式,而不是使用會話或cookie。

例子:我執行了10次這個函數。這裏發生的事情就像'1'顯示了5次,'2'顯示了3次,'3'顯示了2次。但是有沒有可能讓它每次顯示3次?

+1

最後一個問題是關閉的幾分鐘前,沒關係,你已經添加周圍array_rand和會話的一些意見。寫下它,思考如何使它發揮作用的過程。當你得到*某處*時,發佈一些代碼並解釋它出錯的地方。那麼你可能會得到一些幫助。 – Fluffeh 2012-08-08 06:17:59

+0

<?php $ input_arr = array(「1」,「2」,「3」); $ num = Rand(0,3); echo $ input_arr [$ num]; ?>我執行了10次這個函數。這裏發生的事情就像'1'顯示了5次,'2'顯示了3次,'3'顯示了2次。但是有沒有可能讓它每次顯示3次? – user288640 2012-08-08 06:41:54

回答

2

您已經定義了相互排斥的要求:「隨機選擇」和「平等選擇」(或「均勻分佈」)!你不能這樣做。

+0

我認爲他們稱之爲[逆變換抽樣](http://en.wikipedia.org/wiki/Inverse_transform_sampling) – Fluffeh 2012-08-08 06:34:23

1

That是你所需要的:array_rand

例子:

<?php 
$input = array("Neo", "Morpheus", "Trinity", "Cypher", "Tank"); 
$rand_keys = array_rand($input, 1); 
echo $input[$rand_keys[0]] . "\n"; 
?>