# Native Code > برنامه نویسی با C > برنامه نویسی با زبان C و ++C > آموزش: تابع Random

## adel_minayi

سلام
 توی زبان C؛چطور میتونم از تابع random استفاده کنم؟یه بار با این تابع یه برنامه نوشتم که توی هربار اجرا فقط عدد 346 رو انتخاب می کرد!
میخواهم عددی که انتخاب میکنه یا 1 باشه یا 2؟
در ضمن چطور میتونم بهش بگم از بازی مثلا 0 تا 80 فقط عدد انتخاب کن؟

----------


## fshb_ 1370

برای تولید اعداد تصادفی که هر بار مقدار متفاوتی داشته باشه و عدد 1 یا2 باشه میتونید کد زیر رو بنویسید:
#include<ctime>
#include<cstdlib>
void main()
{
int x;    
srand(time(0));
x=1+rand()%2;    
}

با هر بار اجرا x مقدار 1 یا 2 رو میگیره

----------


## clover

بهتر هست که از تابع random استفاده نکنید (به دلیل پایین آمدن قابلیت حمل) و به جای اون از rand (مثال بالا) که با استاندارد ANSI C سازگار هست استفاده کنید.
این هم نمونه برای random با بازه ی 1 تا 2
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>

void main()
{
    int x;
    clrscr();
    randomize();
    for (int i = 0; i < 5; i++)
    {
        x = random(2) + 1;
        printf("%d\n", x);
    }
    getch();

}

----------


## hmrbesharat

میتونی اول تابع main از عبارت randomize() استفاده کنی در این صورت در هر بار اجرا عدد متفاوت باز میگرداند

----------


## m.@.@.i

برای اینکه تابع rand اعداد تکراری تولید نکند باید توسط تابع srand عددی unsigned از ورودی بگیریم بدین ترتیب با هر بار اجرا randعدد جدیدی تولید میکند.برای تولید عدد تصادفی بین بازه a تا b باید از فرمول زیر استفاده کرد:

[a+rand()%[b-a+1مثلا برای داشتن عدد تصادفی در بازه 10 تا 80 باید نوشت: 
10+rand()%71
برنامه زیر 10 عدد تصادفی در بازه 1 تا 6 تولید میکند:#include<iostream.h>
#include<conio.h>
#include<stdlib.h>
int main()
{
 unsigned number;
 cout<<"enter number:";
 cin>>number;
 srand(number);
 for(int i=0;i<10;i++){
      cout<<1+rand()%6;
      cout<<endl;
 }
 getch();
 return 0;
}

----------


## masterprogrammer

سلام.چرا با فرمول بندی؟
بهتره منطقشو بدونیم.وقتی شما اعداد رو به 71 تقسیم میکنی باقیمونده ها بین 0 تا 70 هستند حالا 10 تا اضافه میکنیم تا بشن بین 10 تا 80.پس فقط باید این دو تا عدد رو درست انتخاب کنیم.
اینکه هربار کاربر عدد رو وارد کنه اصلا کارامد نیست چون اغلب تو برنامه ها اجازه همچین کاری رو نداریم.بهتره از همون time که دوستمون گفتن استفاده کنیم که خودش این عدد رو تولید میکنه.
فکر میکنم ورودی srand اینتتیجر نیست بلکه unsigned هست که البته تو کدتون اصلاحش کردین.

----------


## lionelali18

باسلام
میخواستم اگه میتونید کد تابع rand و srand  زو بزام بزارید.
کد خود تابع رو میخوام نه استفاده از اونو ممنون میشم.خیلی فوریه
تو کتابخانه stdlib هم سرچ کردم چیزی دستگیرم نشد

----------


## arad_2218

سلام کد برنامه ساخت جدول با سی رو میخواستم میشه راهنمایم کنیین واسه نوشتنش ممنون :لبخند:

----------

