Random
- constab
- Неотъемлемая часть форума
- Сообщения: 241
- Зарегистрирован: 17 авг 2004, 11:36
- Откуда: Минск
- Контактная информация:
Random
Как заставить при помощи команды Random выводить случайные числа в диапазоне.
Диапазон в принципе не важен.
Числа получаются случайные если выывать random несколько раз подрят.
Неужели нельзя сделать чтобы всегда независимо от количества вызовов random-а выводились разные числа.
Диапазон в принципе не важен.
Числа получаются случайные если выывать random несколько раз подрят.
Неужели нельзя сделать чтобы всегда независимо от количества вызовов random-а выводились разные числа.
Хачу крыху паразумнець!
- constab
- Неотъемлемая часть форума
- Сообщения: 241
- Зарегистрирован: 17 авг 2004, 11:36
- Откуда: Минск
- Контактная информация:
exe, да это все те злостные времена программирования на Delphi под Windows.
Там было все просто:
randomize;
random(10);
И получаешь случайное число от 0 до 9.
Да srand вещь!
Только вот у меня два вопроса:
1) Есть ли в си функция microtime, так как time обнавляет свое значение очень редко.
2) Что-то у меня не получается передать значение рандома от одой функции к другой
И вот что получается на выходе...
Там было все просто:
randomize;
random(10);
И получаешь случайное число от 0 до 9.
Да srand вещь!
Только вот у меня два вопроса:
1) Есть ли в си функция microtime, так как time обнавляет свое значение очень редко.
2) Что-то у меня не получается передать значение рандома от одой функции к другой
Код: Выделить всё
#include <time.h>
#include <stdlib.h>
#include <stdio.h>
int rnd(int max);
int main(){
int i;
for(i=1;i<10;i++){
rnd(i);
printf("%d\n",rnd);
}
}
int rnd(int max){
int x;
srand(time(NULL));
x=rand()%max;
printf("%d\t", x);
return x;
}
Код: Выделить всё
[constab@localhost qwe]$ cc q.c
[constab@localhost qwe]$ ./a.out
0 134513761
0 134513761
2 134513761
0 134513761
4 134513761
2 134513761
1 134513761
0 134513761
5 134513761
[constab@localhost qwe]$
Хачу крыху паразумнець!
Опять. Что вы пишите!? Кому и зачем это надо. Как вы пишите?
Опять же это не юникс вэй
Код: Выделить всё
int rnd(int max){
int x;
srand(time(NULL));
x=rand()%max;
return x;
}
int main(){
int i;
for(i=1;i<10;i++)
printf("%d\n",rnd(i));
}
I did a 'zcat /vmlinuz > /dev/audio' and I think I heard God...
- constab
- Неотъемлемая часть форума
- Сообщения: 241
- Зарегистрирован: 17 авг 2004, 11:36
- Откуда: Минск
- Контактная информация:
Да, мне аж самому стало не приятно, когда увидел, что за бред я написал
Код: Выделить всё
rnd(i);
printf("%d\n",rnd);
Хачу крыху паразумнець!
Может так?
Без маниакального srand()
Код: Выделить всё
static int __rnd (int rmax)
{
return (rand () % rmax) + 1;
}
int rnd (int rmax )
{
return (__rnd (rmax) + __rnd (rmax) + __rnd (rmax) + __rnd (rmax) +
__rnd (rmax) + __rnd (rmax) + __rnd (rmax) + __rnd (rmax) ) / 8;
}
Ну какая работа со строками может быть в языке, название которого является не строкой, а символом? (c) Sergue E. Leontiev
constab, srand () вызывать надо, но только один раз - где-то в main (), например, а не при каждом вызове rnd ().
Зачем реинициялизировать генератор случайных чисел каждый раз, когда нужно псевдослучайное число?
Зачем реинициялизировать генератор случайных чисел каждый раз, когда нужно псевдослучайное число?
Ну какая работа со строками может быть в языке, название которого является не строкой, а символом? (c) Sergue E. Leontiev