Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   PHP (http://www.flasher.ru/forum/forumdisplay.php?f=20)
-   -   задачка (http://www.flasher.ru/forum/showthread.php?t=64004)

Chas 21.10.2004 01:04

задачка
 
есть массив, 216 элементов.
нужно перетасовать элементы списка. Т.е. изменить порядок элементов в нем. Пока придумал следующий вариант:
случайно выбрать ячейку А
случайно выбрать ячейку В
поменять содержимое ячеек местами
повторить n раз

я в пхп не силен. может есть более оригинальное решение?

Nirva 21.10.2004 07:26

есть. самое что ни на есть не оригинальное.
называется array_shuffle()

Chas 21.10.2004 09:32

php rules!

zeboton 21.10.2004 18:43

to Nirva

А по-моему функции array_shuffle() нет, а есть str_shuffle() или ее уже ввели?

styx 21.10.2004 19:10

Есть просто shuffle:
Цитата:

(PHP 3>= 3.0.8, PHP 4 )
shuffle -- Shuffle an array

Nirva 23.10.2004 20:00

да-да, именно просто shuffle.
вообще за такими вопросами следует обращаться в мануал
http://ua2.php.net/manual/ru/function.shuffle.php

Flesh5 23.10.2004 21:56

Уважаемый Chas
вами предложенный вариант я использовал в течении 3 лет программируя на Дельфи, и не разу не было ситуации чтобы он дал сбой!
Чем он вас не устраивает?
Если вас интересет сам код на РНР то ниже он приведен (как советует Нирва):
PHP код:

<?php
  $numbers 
range(1,20);
  
srand((double)microtime*1000000);
  
shuffle($numbers);
  for (
$i=1$i<=20$i++)
    {
      echo 
"$numbers[$i]<br>\n";
    }
?>

Удачи!

Crazy 23.10.2004 22:14

Цитата:

Оригинал написал(а) Flesh5
вами предложенный вариант я использовал в течении 3 лет программируя на Дельфи, и не разу не было ситуации чтобы он дал сбой!
Чем он вас не устраивает?

Я могу сказать, чем он не устраивает лично меня. Тем, что нужно "повторить n раз", а никто пока не смог внятно объяснить, чему должно быть равно n для массива длиной m.

При том, что есть простые алгоритмы, позволяющие построить случайный массив без привлечения загадочных констант. :)

Flesh5 24.10.2004 12:08

Цитата:

Оригинал написал(а) Crazy


Я могу сказать, чем он не устраивает лично меня. Тем, что нужно "повторить n раз", а никто пока не смог внятно объяснить, чему должно быть равно n для массива длиной m.

При том, что есть простые алгоритмы, позволяющие построить случайный массив без привлечения загадочных констант. :)

Я вам открою тайну! В данном случае m = n! Добавлю что функция shuffle наверняка делает тоже самое! :-)

Crazy 24.10.2004 12:37

Цитата:

Оригинал написал(а) Flesh5
[b]Я вам открою тайну! В данном случае m = n!
Сам-то понял, что сказал? Посмотри внимательно, что обозначено как m, а что -- n. И что означает "!".


Часовой пояс GMT +4, время: 22:22.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.