PDA

View Full Version : آموزش: تابع Random



adel_minayi
پنج شنبه 10 دی 1388, 00:19 صبح
سلام
توی زبان C؛چطور میتونم از تابع random استفاده کنم؟یه بار با این تابع یه برنامه نوشتم که توی هربار اجرا فقط عدد 346 رو انتخاب می کرد!
میخواهم عددی که انتخاب میکنه یا 1 باشه یا 2؟
در ضمن چطور میتونم بهش بگم از بازی مثلا 0 تا 80 فقط عدد انتخاب کن؟

fshb_ 1370
پنج شنبه 10 دی 1388, 08:19 صبح
برای تولید اعداد تصادفی که هر بار مقدار متفاوتی داشته باشه و عدد 1 یا2 باشه میتونید کد زیر رو بنویسید:

#include<ctime>
#include<cstdlib>
void main()
{
int x;
srand(time(0));
x=1+rand()%2;
}

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

clover
پنج شنبه 10 دی 1388, 18:51 عصر
بهتر هست که از تابع 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
سه شنبه 15 دی 1388, 00:01 صبح
میتونی اول تابع main از عبارت randomize() استفاده کنی در این صورت در هر بار اجرا عدد متفاوت باز میگرداند

m.@.@.i
سه شنبه 15 دی 1388, 00:55 صبح
برای اینکه تابع 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
سه شنبه 15 دی 1388, 01:50 صبح
سلام.چرا با فرمول بندی؟
بهتره منطقشو بدونیم.وقتی شما اعداد رو به 71 تقسیم میکنی باقیمونده ها بین 0 تا 70 هستند حالا 10 تا اضافه میکنیم تا بشن بین 10 تا 80.پس فقط باید این دو تا عدد رو درست انتخاب کنیم.
اینکه هربار کاربر عدد رو وارد کنه اصلا کارامد نیست چون اغلب تو برنامه ها اجازه همچین کاری رو نداریم.بهتره از همون time که دوستمون گفتن استفاده کنیم که خودش این عدد رو تولید میکنه.
فکر میکنم ورودی srand اینتتیجر نیست بلکه unsigned هست که البته تو کدتون اصلاحش کردین.

lionelali18
چهارشنبه 20 اسفند 1393, 18:27 عصر
باسلام
میخواستم اگه میتونید کد تابع rand و srand زو بزام بزارید.
کد خود تابع رو میخوام نه استفاده از اونو ممنون میشم.خیلی فوریه
تو کتابخانه stdlib هم سرچ کردم چیزی دستگیرم نشد

arad_2218
سه شنبه 18 اردیبهشت 1397, 16:35 عصر
سلام کد برنامه ساخت جدول با سی رو میخواستم میشه راهنمایم کنیین واسه نوشتنش ممنون:لبخندساده: