Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Архив Flasher.ru > Программирование > PHP

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 24.10.2004, 14:44
Flesh5 вне форума Посмотреть профиль Отправить личное сообщение для Flesh5 Посетить домашнюю страницу Flesh5 Найти все сообщения от Flesh5
  № 11  
Flesh5

Регистрация: Jun 2002
Сообщений: 226
Отправить сообщение для Flesh5 с помощью ICQ
Во прикольно! Что значит что знаки пунктуации совпадают с математическим знаком (факториал)! :-) В конце n у меня не факториал а восклицательный знак! :-)
П.С. А я раза три перечитал ваш пост и не могу понять что у меня написано такое что вызвало возмущение! LOL

Старый 24.10.2004, 14:58
nagash вне форума Посмотреть профиль Отправить личное сообщение для nagash Посетить домашнюю страницу nagash Найти все сообщения от nagash
  № 12  
nagash
Ветеран форума
 
Аватар для nagash

Регистрация: Jul 2001
Адрес: Москва
Сообщений: 3,088
Отправить сообщение для nagash с помощью ICQ
не будем спорить...
вот так это делает ПХП
Код:
static void array_data_shuffle(zval *array TSRMLS_DC)
{
	Bucket **elems, *temp;
	HashTable *hash;
	int j, n_elems, rnd_idx, n_left;

	n_elems = zend_hash_num_elements(Z_ARRVAL_P(array));
	
	if (n_elems < 1) {
		return;
	}

	elems = (Bucket **)safe_emalloc(n_elems, sizeof(Bucket *), 0);
	hash = Z_ARRVAL_P(array);
	n_left = n_elems;

	for (j = 0, temp = hash->pListHead; temp; temp = temp->pListNext)
		elems[j++] = temp;
	while (--n_left) {
		rnd_idx = php_rand(TSRMLS_C);
		RAND_RANGE(rnd_idx, 0, n_left, PHP_RAND_MAX);
		if (rnd_idx != n_left) {
			temp = elems[n_left];
			elems[n_left] = elems[rnd_idx];
			elems[rnd_idx] = temp;
		}
	}

	HANDLE_BLOCK_INTERRUPTIONS();
	hash->pListHead = elems[0];
	hash->pListTail = NULL;
	hash->pInternalPointer = hash->pListHead;

	for (j = 0; j < n_elems; j++) {
		if (hash->pListTail) {
			hash->pListTail->pListNext = elems[j];
		}
		elems[j]->pListLast = hash->pListTail;
		elems[j]->pListNext = NULL;
		hash->pListTail = elems[j];
	}
	temp = hash->pListHead;
	j = 0;
	while (temp != NULL) {
		temp->nKeyLength = 0;
		temp->h = j++;
		temp = temp->pListNext;
	}
	hash->nNextFreeElement = n_elems;
	zend_hash_rehash(hash);
	HANDLE_UNBLOCK_INTERRUPTIONS();

	efree(elems);
}
не важно так же делает это сам ПХП или нет... смысл делать что-то на самом ПХП если это уже воплощено на сях...
мне кажется на сях полюбому побыстрее будет.
даже если алгоритм такой же.

Старый 24.10.2004, 19:47
Crazy вне форума Посмотреть профиль Отправить личное сообщение для Crazy Посетить домашнюю страницу Crazy Найти все сообщения от Crazy
  № 13  
Crazy
[+1 23.05.11]
 
Аватар для Crazy

Регистрация: Dec 2001
Сообщений: 4,159
Цитата:
Оригинал написал(а) Flesh5
Во прикольно! Что значит что знаки пунктуации совпадают с математическим знаком (факториал)! :-) В конце n у меня не факториал а восклицательный знак! :-)
Ok. Поправка принята. Теперь вопрос: почему именно m = n, а не m = n/2 или m = n / Pi ?
__________________
GIT d++ s++:++ a C++$ UB++ P++ L+ E+ W+++ N++ w++ O+ M V- t-- 5-- X+ R+++ tv- b+++ D++

Старый 24.10.2004, 21:26
Flesh5 вне форума Посмотреть профиль Отправить личное сообщение для Flesh5 Посетить домашнюю страницу Flesh5 Найти все сообщения от Flesh5
  № 14  
Flesh5

Регистрация: Jun 2002
Сообщений: 226
Отправить сообщение для Flesh5 с помощью ICQ
Pochemu m=n obiasnit legko!
Tak kak esli bi mi razmeshali n elementov v masiv sluchainoi posledovatelnostu, to kolichestvo mest v masive ravno n. A znachit esli mi delaetm m peremeshenii to koeficient peremeshivania sootvetstvuet koeficientu sluchainoi posledovatelnosti! :-)

Старый 24.10.2004, 21:49
nagash вне форума Посмотреть профиль Отправить личное сообщение для nagash Посетить домашнюю страницу nagash Найти все сообщения от nagash
  № 15  
nagash
Ветеран форума
 
Аватар для nagash

Регистрация: Jul 2001
Адрес: Москва
Сообщений: 3,088
Отправить сообщение для nagash с помощью ICQ
=)
мило...
=)

Старый 24.10.2004, 21:57
Crazy вне форума Посмотреть профиль Отправить личное сообщение для Crazy Посетить домашнюю страницу Crazy Найти все сообщения от Crazy
  № 16  
Crazy
[+1 23.05.11]
 
Аватар для Crazy

Регистрация: Dec 2001
Сообщений: 4,159
Цитата:
Оригинал написал(а) Flesh5
sootvetstvuet koeficientu sluchainoi posledovatelnosti! :-)
Во-первых, термин "коэффициент случайности" есть бред. Не надо создавать наукообразность.

Очевидно, кстати, что каждая перестановка перемещает сразу два элемента. Соответственно, нет оснований считать, что повышение n свыше m/2 даст "более случайный" массив.

Если же подходить к этому делу серьезно, то нужно либо обосновывать (без демагогии), либо проводить "следственный эксперимент". Либо, как я уже говорил, выбирать алгоритм, не зависящий от "волшебного n".
__________________
GIT d++ s++:++ a C++$ UB++ P++ L+ E+ W+++ N++ w++ O+ M V- t-- 5-- X+ R+++ tv- b+++ D++

Старый 24.10.2004, 22:23
Flesh5 вне форума Посмотреть профиль Отправить личное сообщение для Flesh5 Посетить домашнюю страницу Flesh5 Найти все сообщения от Flesh5
  № 17  
Flesh5

Регистрация: Jun 2002
Сообщений: 226
Отправить сообщение для Flesh5 с помощью ICQ
Crazy! Ia prikalivaus!
A esli seriozno to voobshe vi pravi m/2 dast kak mne kajetsa totje rezultat, a voobshe nado proverit eksperementalno!

Старый 24.10.2004, 22:28
nagash вне форума Посмотреть профиль Отправить личное сообщение для nagash Посетить домашнюю страницу nagash Найти все сообщения от nagash
  № 18  
nagash
Ветеран форума
 
Аватар для nagash

Регистрация: Jul 2001
Адрес: Москва
Сообщений: 3,088
Отправить сообщение для nagash с помощью ICQ
=)))))
что за детский сад?
что проверить эксперементально?

Старый 24.10.2004, 22:46
Flesh5 вне форума Посмотреть профиль Отправить личное сообщение для Flesh5 Посетить домашнюю страницу Flesh5 Найти все сообщения от Flesh5
  № 19  
Flesh5

Регистрация: Jun 2002
Сообщений: 226
Отправить сообщение для Flesh5 с помощью ICQ
Da prosto interes poiavilsa vot i interesno chemu doljno ravnaca n pri masive m! Zavtra poidu v univer i sproshu u uchitela teorii veroiatnosti, on naverneka budet znat!
A chto eta cifra imeet znachenie eto tochno, naprimer esli n ravno 1 to poluchitsa figna! ne tak li?

Старый 24.10.2004, 22:58
nagash вне форума Посмотреть профиль Отправить личное сообщение для nagash Посетить домашнюю страницу nagash Найти все сообщения от nagash
  № 20  
nagash
Ветеран форума
 
Аватар для nagash

Регистрация: Jul 2001
Адрес: Москва
Сообщений: 3,088
Отправить сообщение для nagash с помощью ICQ
нет...
у меня 3 элемента в массиве... поэтому надо переставить один раз...

Создать новую тему   Часовой пояс GMT +4, время: 04:55.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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