![]() |
|
||||||||||
|
|||||
///////////////////////////////////////////////
/////////////////Skripun to Russian flasher////////////////////
///////////25-05-06////////22-20/////////
///////////////////////////////////////////////
// Модули
// Ввод-Вывод
#include <iostream.h>
#include <stdio.h>
// RAND & SRAND
#include <stdlib.h>
// TIME
#include <time.h>
int main(void)
{
// Начнём...
cout << "--------------------------------" << "\n";
// Размер массива
const unsigned int sz=10;
// время выдержки.Чем больше сам массив тем больше должно быть для более эффективного
// разброса.Можно поставить на sz.Или тоже через рандом, но не меньше чем число элементов массива!
int looptime=100;
// unsigned int looptime=sz;
// Преинициализация массива
// Так
// int mas[]={0,1,2,3,4,5,6,7,8,9};
// Или так
int mas[sz];for (int i=0;i<sz;i++) mas[i]=i;
// Для замены мест
int r1,r2;
// Новая стартовая точка для Rand !
srand((unsigned)time(NULL));
for ( i=0;i<looptime;i++)
{
// Находим, какие элементы меняем местами
do
{
r1=rand()%10;
r2=rand()%10;}
while (r1==r2) ;
// Выводим по приколу меняемые элементы (паранойя)
cout << "mas[" << r1 << "]=" << mas[r1] ;
cout << " mas[" << r2 << "]=" << mas[r2] ;
// Меняем местами (не C-прогеру будет сложно понять)
// Операция модуль 2 (Bitwise-exclusive-OR assignment)
// РАБОТАЕТ ТОЛЬКО С ЦЕЛОЧИСЛЕННЫМИ ТИПАМИ!!!!!!!!!!!!!
mas[r1]^= mas[r2]^=mas[r1]^=mas[r2];
// Альтернативная замена - ВЕЗДЕ РАБОТАЕТ!!!!!!!!!!!!!!
/*
mas[r1]=mas[r1]+mas[r2];
mas[r2]=mas[r1]-mas[r2];
mas[r1]=mas[r1]-mas[r2];
*/
// Результат замены (ещё паранойя)
cout << " changed on mas[" << r1 << "]=" << mas[r1] ;
cout << " mas[" << r2 << "]=" << mas[r2] << "\n";
};
// Выводим и радуемся жизни
for (i=0;i<sz;i++)
{
cout << mas[i] << "\n";
};
// Это ради крутости - 0 значит всё в порядке!
return 0;
// P.S.: комментарии писались много дольше самой проги!!!
}
Последний раз редактировалось Nirth; 26.05.2006 в 09:44. |
|
|||||
|
Регистрация: May 2006
Сообщений: 57
|
В стандартной библиотеке C++ стоит фиговый генератор псевдослуч чисел.
Если хочешь иметь нормальный, используй библиотеку Boost. Там можно даже распределение случайной величины выбрать. |
|
|||||
|
Регистрация: Nov 2005
Адрес: Donetsk
Сообщений: 203
|
всем спасибо за советы...
World Architect: еще вопрос - библиотеку boost.dll? и почему именно ее? |
|
|||||
|
don't panic!
Регистрация: Aug 2001
Сообщений: 4,121
|
Цитата:
я всю жизнь использую random() во флэше и не видел таких высоко-точных задач, когда этого не достаточно. если же требуется какое-то определенное распределение случайных величин - экспоненциальное, по гауссу и т. п., то можно взять соответствующую функцию (изобретать которую не нужно). Цитата:
либо у вас какая-то сильно хитрая задача, либо заказчик просто не понимает, что хрен редьки не слаще. |
|
|||||
|
А у меня во флэш часто глюки... к примеру если я задам рандомное число до 100 выпадет 24... и так несколько раз подряд.. хотя может и случайность
А еще у меня морской бой: кораблики почему-то больше по правую сторону располагаются... хотя все случаи равновероятные... |
![]() |
![]() |
Часовой пояс GMT +4, время: 19:03. |
|
|
« Предыдущая тема | Следующая тема » |
|
|