PDA

View Full Version : سوال: تولید اعداد تصادفی در سی شارپ



SalmanAdl
شنبه 21 اردیبهشت 1387, 00:41 صبح
با سلام خدمت شما عزیزان گل گلاب،اگه بخوام یک عدد بین 1 تا 10 تولید کنم(به طور تصادفی)از چه دستوری باید استفاه کنم خیلی ممنون:اشتباه:

mohammad272005
شنبه 21 اردیبهشت 1387, 00:57 صبح
اين خدمت دوست عزيز:

Random random = new Random();
for (int i = 0; i < 100; i++)
Console.WriteLine(random.Next(1, 10));
Console.ReadKey();

agtabesh
شنبه 15 تیر 1387, 03:55 صبح
Random r=new Random();
Console.WriteLine(r.Next() % 10);

ramin_ramin
یک شنبه 23 تیر 1387, 11:10 صبح
خوب دوست من اگر بخواهم اعداد تصادفی را با این شرط که تکراری نباشند را استفاده کنم چه کاری باید بکنم

sinpin
یک شنبه 23 تیر 1387, 11:20 صبح
خوب دوست من اگر بخواهم اعداد تصادفی را با این شرط که تکراری نباشند را استفاده کنم چه کاری باید بکنم
ميتونيد يك ليست n خونه اي داشته باشيد و فرآيند ايجاد يك عدد اتفاقي رو در يك حلقه انجام دهيد.
به اين شكل كه شرط حلقه اين است كه "ماداميكه عدد توليد شده درون ليست وجود دارد يك عدد ديگر توليد كن" در غير اينصورت عدد ساخته شده را به ليست اضافه ميكنيد و اين عمل رو n بار انجام ميديد...

علیرضا مداح
یک شنبه 23 تیر 1387, 17:27 عصر
سلام دوست عزیز ،
همچنین میتوانید از کلاس System.Security.Cryptography.RNGCryptoServiceProvi der که از کلاس
System.Security.Cryptography.RandomNumberGenerator به ارث برده شده و اعداد رندوم واقعی تولید میکند استفاده نمایید :


byte[] randomNumber = new byte[1];
System.Security.Cryptography.RNGCryptoServiceProvi der.Create().GetBytes(randomNumber);
MessageBox.Show("Random Number : " + randomNumber[0].ToString());

Parham.D
دوشنبه 24 تیر 1387, 08:09 صبح
توي VB اين كد وجود داره كه اگر بشه به C# تبديل كنيد، اعداد تصادفي غير تكراري مي‏سازه.




Randomize ()

Label1.Text = CStr(Int(Rnd() * 10



خط اول تابع است.

ASKaffash
دوشنبه 24 تیر 1387, 08:16 صبح
خوب دوست من اگر بخواهم اعداد تصادفی را با این شرط که تکراری نباشند را استفاده کنم چه کاری باید بکنم

سلام
این متد ک برایت نوشتم یک آرایه ای تصادفی از اعداد غیر تکراری ایجاد میکند که در یک محدوده عددی مورد نظر ایجاد میگردد:(GetRandomIndex)


/// <summary>
/// ایجاد شاخص تصادفی برای یک محدوده
/// </summary>
/// <param name="MinValue"></param>
/// <param name="MaxValue"></param>
/// <returns></returns>
public static int[] GetRandomIndex(int MinValue, int MaxValue)
{
List<int> RtnList = new List<int>();
Random R = new Random();
int Cnt = 0;
while (Cnt < MaxValue - MinValue + 1)
{
int r = R.Next(MinValue - 1, MaxValue + 1);
if (BetWeen(r, MinValue, MaxValue) && !RtnList.Contains(r))
{
RtnList.Add(r);
Cnt++;
}
}
return RtnList.ToArray();
}



public static bool BetWeen(object MainValue, object Value1, object Value2)
{
decimal TmpMainValue = Convert.ToDecimal(MainValue);
decimal TmpValue1 = Convert.ToDecimal(Value1);
decimal TmpValue2 = Convert.ToDecimal(Value2);
return (TmpValue1 <= TmpMainValue && TmpMainValue <= TmpValue2);
}

p30ware
سه شنبه 04 خرداد 1389, 02:32 صبح
حالا اگه بخوایم تو محیط کنسول یک console.readline بزاریم و dیک عددی از کاربر بگیره .
اگر اون عددی که کاربر وارد کرد توی اعداد تصادفی که تولید کردیم بود yes چاپ بشه و اگه نبود No چاب بشه چیکار باید کرد من هرکاری کردم نشد

amir-yeketaz
سه شنبه 04 خرداد 1389, 09:45 صبح
حالا اگه بخوایم تو محیط کنسول یک console.readline بزاریم و dیک عددی از کاربر بگیره .
اگر اون عددی که کاربر وارد کرد توی اعداد تصادفی که تولید کردیم بود yes چاپ بشه و اگه نبود No چاب بشه چیکار باید کرد من هرکاری کردم نشد
به نظرم همون كاري كه استاد sinpin گفتن بكنيد براتون بهتره ... چون انعطاف پذيري بيشتري داره
يعني اگه اعداد تصادفي رو تو يه ليست يا آرايه بريزيد براحتي ميتونيد تو اون چك كنيد كه برابري با اون عدد ديگه(d) وجود داره يا نه ...
البته نظر من بين اين همه استاد شايد زياد مهم نباشه چون من خودمم مبتديم ولي خوب كنجكاوي...

موفق باشيد

p30ware
سه شنبه 04 خرداد 1389, 19:29 عصر
آخه من اون رو خوب متوجه نشدم .. اگه لطف کنید ساده همون روشی که تو پستم نوشتم بگید ممنون میشم

alimooghashang
شنبه 15 خرداد 1389, 13:07 عصر
میشه بگید چطوری میشه دو عدد تصادفی غیر تکراری بین -1 و 1 ساخت؟
یعنی اگه 0 بود بعدی یا 1 باشه یا -1

amir-yeketaz
شنبه 15 خرداد 1389, 13:55 عصر
میشه بگید چطوری میشه دو عدد تصادفی غیر تکراری بین -1 و 1 ساخت؟
یعنی اگه 0 بود بعدی یا 1 باشه یا -1
قبلا هم گفتم ... میتونید اعداد تولید شده توسط تابع Random.Next رو بریزین تویه یه آرایه و هر کاری که دلتون میخواد باهاش بکنید ...
خوب این برای سوال شما :

Random r = new Random();
int[] sel = new int[3];
while (true)
{
for (int i = 0; i < 3; i++)
{
sel[i] = r.Next(-1, 2);
}
if (sel[0] != sel[1] && sel[1] != sel[2] && sel[0] != sel[2])
break;

}
for (int i = 0; i < 2; i++)
{
Console.WriteLine(sel[i]);

}

امیدوارم که بدردتون خورده باشه ...
موفق باشید

alimooghashang
شنبه 15 خرداد 1389, 14:07 عصر
مرسی
حالا سخت ترش میکنیم
ببینید
دوتا عددی که تولید میشه
حتما باید یکیش 0 باشه
و اون یکی یا 1 هست یا -1

:D

یعنی یکی از این حالت ها


0 1
0 -1
-1 0
1 0

amir-yeketaz
شنبه 15 خرداد 1389, 16:24 عصر
مرسی
حالا سخت ترش میکنیم
ببینید
دوتا عددی که تولید میشه
حتما باید یکیش 0 باشه
و اون یکی یا 1 هست یا -1

:D

یعنی یکی از این حالت ها


0 1
0 -1
-1 0
1 0


خیلی سادست فقط یه شرط داخل شرط اصلی اضافه میکنیم و میگیم اگه خونه ی اول آرایه یا خونه ی دوم آرایه صفر بود حلقه شکسته بشه ... دلیل اصلی این که من از آرایه استفاده کردم بخاطره همین سوالا بود که الان شما بهش اضافه کردین :لبخند:
اینم کدش :

Random r = new Random();
int[] sel = new int[3];
while (true)
{
for (int i = 0; i < 3; i++)
{
sel[i] = r.Next(-1, 2);
}
if (sel[0] != sel[1] && sel[1] != sel[2] && sel[0] != sel[2])
{
if (sel[0] == 0 || sel[1] == 0) break;
}

}
for (int i = 0; i < 2; i++)
{
Console.WriteLine(sel[i]);


بازم سوالی دارین اگه بتونم و در حدم باشه جواب میدم ...
موفق باشید

alimooghashang
شنبه 15 خرداد 1389, 21:34 عصر
فکر کنم منظورم رو نگرفین
من از این سه عدد فقط دوتاشو نیاز دارم
و حتما باید یکی از این دو عدد یک باشه!
عدد رندوم بعدی یا باید 1 باشه یا -1
طبق اون حالت هایی که گفتم!

amir-yeketaz
یک شنبه 16 خرداد 1389, 00:34 صبح
فکر کنم منظورم رو نگرفین
من از این سه عدد فقط دوتاشو نیاز دارم
و حتما باید یکی از این دو عدد یک باشه!
عدد رندوم بعدی یا باید 1 باشه یا -1
طبق اون حالت هایی که گفتم!
این حرفتونو با حرف قبلی که زدید مقایسه کنید :

دوتا عددی که تولید میشه
حتما باید یکیش 0 باشه
و اون یکی یا 1 هست یا -1
یه بار گفتین صفر باشه حتمت و بعدش گفتین حتما یک باشه ... واقعا نمیدونم یا من نمیفهمم یا سرکارم(ببخشید که رک گفتم!)
اگه بیشتر توضیح بدین ممنون میشم ...

alimooghashang
یک شنبه 16 خرداد 1389, 00:37 صبح
ببخشید مشکل از منه!

ببینید
من دو تا عدد راندوم میخوام

که یکیش حتما 0 هست
و دومیش یا 1 یا -1

amir-yeketaz
یک شنبه 16 خرداد 1389, 00:45 صبح
ببخشید مشکل از منه!

ببینید
من دو تا عدد راندوم میخوام

که یکیش حتما 0 هست
و دومیش یا 1 یا -1
ببینید تو اون کد دومی که من نوشتم خونه اول آرایه یا خونه ی دوم آرایه عدد صفره و اون یکی هم یا 1 هست یا منفی یک !!!!
برنامه ی کاملشو(با توضیحات) میذارم ببینید ... فکر میکنم مشکلی نداره

موفق باشید ...

rezaitman
جمعه 16 اردیبهشت 1390, 21:52 عصر
من میخوام از بین 144 دکمه 32 تای اونارو به طور رندمی انتخاب کنم و بگم اگر در هنگام اجرای برنامه دکمه ی کلیک شده جزو دکمه های رندم شده بود یکسری دستورات را انجام بده.حالا من چه کدی را در سی شارپ به کار ببرم؟میشه کمکم کنید؟

only45
یک شنبه 26 آذر 1391, 10:10 صبح
سلام
من میخام با هربار اجرا شدن برنامم داخل text1یک کد قرار بگیره؟؟؟؟
دقیق بگید کجا چه کدی بنویسم
مرسییی

مهرداد صفا
یک شنبه 26 آذر 1391, 12:13 عصر
من میخوام از بین 144 دکمه 32 تای اونارو به طور رندمی انتخاب کنم و بگم اگر در هنگام اجرای برنامه دکمه ی کلیک شده جزو دکمه های رندم شده بود یکسری دستورات را انجام بده.حالا من چه کدی را در سی شارپ به کار ببرم؟میشه کمکم کنید؟

سلام

//in the name of god
//صل الله علی محمد و آله
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
List<Button> Buttons=new List<Button>();
public Form1()
{
InitializeComponent();
for (int i = 1; i <= 134; i++)
{
Button NewButton = new Button();
NewButton.Click += new EventHandler(ButtonClicked);
NewButton.Name = "button" + i.ToString();
NewButton.Text = NewButton.Name;
//...
this.Controls.Add(NewButton);
}//next i
var AllButtons=(from button in this.Controls.Cast<Control>() where button is Button select button).ToArray();
for (int j = 1; j <= 32; j++)
{
int RandomIndex = new Random().Next(0, 134);
while(Buttons.Contains(AllButtons[RandomIndex]))
{
RandomIndex=new Random().Next(1,135);
}//end while
Buttons.Add((Button)AllButtons[RandomIndex]);
}//next j



}
void ButtonClicked(object sender, EventArgs e)
{
if(Buttons.Contains((sender as Button)))
{
//button that has clicked is from random buttons
MessageBox.Show("random button clicked");
//...
}//end if
}//end ButtonClicked
}
}

jblaox
دوشنبه 26 فروردین 1392, 18:29 عصر
سلام دوست عزیز ،
همچنین میتوانید از کلاس System.Security.Cryptography.RNGCryptoServiceProvi der که از کلاس
System.Security.Cryptography.RandomNumberGenerator به ارث برده شده و اعداد رندوم واقعی تولید میکند استفاده نمایید :


byte[] randomNumber = new byte[1];
System.Security.Cryptography.RNGCryptoServiceProvi der.Create().GetBytes(randomNumber);
MessageBox.Show("Random Number : " + randomNumber[0].ToString());


سلام به نظرم جالبتر از متد new Random() است اما آیا میشود این متد بدون ایجاد شرط حلقه و ... بگونه مجبور کرد که در بازه ای خاص عدد تصادفی تولید کند ، مثلا بین 0 تا 10 ؟؟

با تشکر از راهنمایی شما

katauri
شنبه 25 خرداد 1392, 23:14 عصر
سلام

یک کد میخواستم که از کاربر حاصل ضرب دو عدد رو سوال کنه ولی هر سری دو عدد به صورت تصادفی انتخاب شود

mahyaabr
دوشنبه 05 خرداد 1393, 17:42 عصر
سلام من برای یه قسمت از پروژم برنامه ای با زبان سی شارپ می خوام که هر دفعه یه عدد تصادفی بین 1 و 60 بهم بده ، کسی می تونه کمکم کنه ؟
و می خوام اینو بهش اضافه کنم ..

pars1376
شنبه 17 خرداد 1393, 18:29 عصر
سلام من برای یه قسمت از پروژم برنامه ای با زبان سی شارپ می خوام که هر دفعه یه عدد تصادفی بین 1 و 60 بهم بده ، کسی می تونه کمکم کنه ؟
و می خوام اینو بهش اضافه کنم ..


Random Rnd = new Random();
Console.WriteLine(Rnd.Next(1, 61));



البته اگه از لیبل یا تکست باکس استفاده میکنین فک کنم اول باید به string تبدیل بشه

fereshte_b
یک شنبه 18 خرداد 1393, 06:43 صبح
اگه بخواهیم که این اعداد تصادفی تکراری نباشه چی!! ارسال 15 فکر کنم خوبه اما اون مال سه تا عدده
من محدوده اعداد 5 رقمیو میخام

rahnema1
یک شنبه 18 خرداد 1393, 09:21 صبح
اگه بخواهیم که این اعداد تصادفی تکراری نباشه چی!! ارسال 15 فکر کنم خوبه اما اون مال سه تا عدده
من محدوده اعداد 5 رقمیو میخام

این برنامه این کار را می کنه:

HashSet<int> GenerateRand(int count,int start,int end){
HashSet<int> randomSet= new HashSet<int>();
Random rnd = new Random();
int aRandomNumber;
while (randomSet.Count<count) {
if (!randomSet.Contains(aRandomNumber=rnd.Next(start, end))) {
randomSet.Add(aRandomNumber);
}
}
return randomSet;
}

مثلا گه بخواهید بین 0 تا 99999 بیایید 10 تا عدد انتخاب کنید بدون تکرار این طوره:

HashSet<int> myset = GenerateRand(10,0,1000000);

ebeyyari
پنج شنبه 09 بهمن 1393, 23:29 عصر
سلام دوستان
می خواستم برنامه پرتاب دو تاس و نتایج پرتاب رو بنویسیم نمی دونم از کجا شروع کنم (البته در محیط کنسول و به زبان سی شارپ)

alibaqdadloo
سه شنبه 19 آبان 1394, 14:21 عصر
سلام دوست عزیز
هر بار که 1 رو از روی کیبرد بزنی دوتا تاس میندازه
اگه هر چیزی بجز 1 بزنی از برنامه خارج میشه

136614

Helmod
سه شنبه 19 مرداد 1395, 00:12 صبح
سلام

ببخشید یه سوال دارم، میشه کد ساده ای نوشت که به کد زیر بگه : اعداد 11 رقمی تولید کن؟


private void button1_Click(object sender, EventArgs e)
{
Random RandomCode = new Random();

int rnd = RandomCode.Next(1,100);

textBox1.Text = rnd.ToString();

}



در حقیقت میخواییم کدی که بین 1 الی 99 تولید میشه 11 رقمی باشه