2010-10-15 35 views
12

Tôi có một mảng gồm 30 giá trị và tôi cần trích xuất từ ​​mảng này 3 giá trị ngẫu nhiên khác nhau. Tôi làm nó như thế nào?Chọn 3 giá trị ngẫu nhiên khác nhau từ một mảng

+0

thể trùng lặp của [Nhận một tập hợp con của các giá trị ngẫu nhiên từ một mảng php] (http://stackoverflow.com/questions/3504401/get-a-subset-of -random-values-from-an-array-php) – kennytm

Trả lời

17

shamelessly bị đánh cắp từ hướng dẫn PHP:

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

http://us2.php.net/array_rand

Lưu ý rằng, tính đến PHP 5.2.10, bạn có thể muốn để shuffle (ngẫu nhiên) các các phím được trả lại qua shuffle($rand_keys), nếu không chúng sẽ luôn theo thứ tự (chỉ mục nhỏ nhất trước tiên). Đó là, trong ví dụ trên, bạn có thể nhận được "Neo, Trinity" nhưng không bao giờ "Trinity, Neo".

Nếu thứ tự của các phần tử ngẫu nhiên không quan trọng, thì mã ở trên là đủ.

3

sử dụng shuffle($array) sau đó array_rand($array,3)

+0

Bất kỳ lý do cụ thể nào mà bạn đang gọi là 'shuffle'? –

+2

chỉ để chắc chắn nó là ngẫu nhiên :) .. lịch sử đằng sau nó là một thực tế rằng năm ngoái bằng cách sử dụng array_rand tôi đã nhìn thấy kết quả không-ngẫu nhiên (các mục tương tự trên chạy liên tiếp), do đó, để làm cho nó một chút ngẫu nhiên hơn tôi sẽ trộn các mảng đầu tiên và sau đó nguồn cấp dữ liệu cho các chức năng array_rand và nó dường như cung cấp cho các giá trị ngẫu nhiên hơn. –

+0

Bạn vẫn cần nhận được từ các khóa đến giá trị .... –

4

Tôi không chắc tại sao lại bận tâm sử dụng array_rand() vì nó chỉ là một cuộc gọi hàm bổ sung cho dường như không có lý do gì. Đơn giản chỉ cần shuffle() và cắt ba yếu tố đầu tiên:

shuffle($array); 
print_r(array_slice($array, 0, 3)); 
+0

Sạch hơn nhiều, đây phải là câu trả lời được chấp nhận –

Các vấn đề liên quan