Титла: Rand() и osx Публикувано от: Stratovarius в Oct 21, 2007, 11:30 Това е кода с който си вземам случайно число:
У нас на Mac OS X не работи. В университета го качвам и работи, предполагам че има нещо общо с стойността на RAND_MAX, връща винаги z=2 у нас. някакви идеи ? Титла: Rand() и osx Публикувано от: task_struct в Oct 21, 2007, 13:07 Притеснява ме деленето. Ако rand() върне малко число (спрямо RAND_MAX), ще се получи стойност, клоняща към 0. При умножението по 100 може да се получи отрязване на част от стойността. Това зависи oт вида компилатора, процесора и размера на паметта, в която се прази променливата.
Също така крайния резултат ти е int. Стройност от сорта на 0.000004234234 в int e 0 . Титла: Rand() и osx Публикувано от: Stratovarius в Oct 21, 2007, 14:41 И на мен ми беше странно, аз бих написал само rand() % 100, за да получа число между 0 и сто, но прочетох в един туториал че е грешно така понеше взимам под внимание само долните битове на числото и по малко случайно там беше описана от мен ползваната формула:
http://members.cox.net/srice1/random/crandom.html която работи в университета, а у нас не ? В университета работи с gcc version 3.3.5 20050117 (prerelease) (SUSE Linux) А у нас с не: gcc version 4.0.1 (Apple Computer, Inc. build 5367) Титла: Rand() и osx Публикувано от: tarator в Oct 21, 2007, 18:45 Ами примера ти показва, че умниците, измислили гениалната формула, по която смяташ не са чак толкова умни колкото си мислят Очевидно алгоритъма им не работи добре за случайната функция на Мака. Предполагам, че при тяхната функция ниските битове са по-случайни от високите. Между другото, ако направиш srand(), rand(), rand(), втория резултат е достатъчно случаен.
Титла: Rand() и osx Публикувано от: Stratovarius в Oct 21, 2007, 19:12 всъщност проблема се корени в gcc.
Във версия 4.0 и на горе има друго API за генериране на случайни числа. И в manна версия 3.* пише да не се ползва rand() % x; ще прочета целия ман и ще го предам така че да върви на унито, компилирано на gcc 3, но ще разнищя ситуацията |