random number in C
4 отговора
293 прегледа
random number in C
Здравейте.
Мъча се тука да направя една програмка на С, обаче имам един проблем.
Искам да попитам има ли някаква библиотечна функция, която връща произволно число от даден интервал.Например нещо от рода на:
.......
/* на i се присвоява произволно число от интервала 0 - 9, например 5 */
i=function_random(0, 9);
<some code goes here>
.......
/* на i се присвоява произволно число от интервала 0 - 9, например 8 */
i=function_random(0, 9);
<some code goes here>
.......
Предварително благодаря!
Мъча се тука да направя една програмка на С, обаче имам един проблем.
Искам да попитам има ли някаква библиотечна функция, която връща произволно число от даден интервал.Например нещо от рода на:
.......
/* на i се присвоява произволно число от интервала 0 - 9, например 5 */
i=function_random(0, 9);
<some code goes here>
.......
/* на i се присвоява произволно число от интервала 0 - 9, например 8 */
i=function_random(0, 9);
<some code goes here>
.......
Предварително благодаря!
Re: random number in C
rand() ти връща случайно число до 0xffff от него можеш да си направиш каквото искаш вече
Re: random number in C
Много благодаря!
Не съм много наясно какво означава 0xffff (предполагам число в 16'ична бройна с-ма), обаче info'то което ми дадохте ми свърши работа. Само искам да допълня , че като се поразрових из goole разбрах, че връщаното число се генерира въз основа на дадено друго число - seed и ако този seed (определя се от функцията srand() ) е един и същ се връща едно и също число. Затова ако ти трябват различни числа, те трябва да се генерират например въз основа на текущото време.В моя случай нещо такова:
......
srand(time(NULL));
i=1+rand()%9;
.....
Не съм много наясно какво означава 0xffff (предполагам число в 16'ична бройна с-ма), обаче info'то което ми дадохте ми свърши работа. Само искам да допълня , че като се поразрових из goole разбрах, че връщаното число се генерира въз основа на дадено друго число - seed и ако този seed (определя се от функцията srand() ) е един и същ се връща едно и също число. Затова ако ти трябват различни числа, те трябва да се генерират например въз основа на текущото време.В моя случай нещо такова:
......
srand(time(NULL));
i=1+rand()%9;
.....
Re: random number in C
точно така. само имай предвид че посочения метод с делене по модул е леко асиметричен когато става въпрос за делене на число нестепен на 2. ако ти трябва прецизност тогава трябва да отхвърляш числата по-големи от най-голямото кратно.
Re: random number in C
Тва дето си го записал връща число от 1 до 9. Ти май искаше от 0 до 9. Демек трябва ти rand()%10 .
int function_random(int left, int right)
{
return left + rand()%(right-left+1);
}
System Doctor Error:
Your girlfriend is pregnant.
(A)bort, (M)arry, (I)gnore?_
int function_random(int left, int right)
{
return left + rand()%(right-left+1);
}
System Doctor Error:
Your girlfriend is pregnant.
(A)bort, (M)arry, (I)gnore?_
Редактирано от Colombino на