تولید اعداد تصادفی غیر تکراری
سلام
برای تولید اعداد تصادفی ازکلاس Random استفاده میکنم.
Random myRandom = newRandom();
حالا اگه در حلقه چنین دستوری داشته باشیم:
int Counter;
int myValue;
for (Counter = 0; Counter < 20; Counter++)
{
myValue= myRandom.Next(20);
}
سوال من اینه که به این وسیله اعداد تصادفی ساخته میشند اما ممکنه در این اعداد تکراری هم وجود داشته باشه.
اگر بحواهیم مثلا 20 رکورد رو از بانک بخونیم و به روش بالا این 20 رکوردها رو بازیابی بکنیم رکورد های تکراری هم برمیگردونه.
آیا کلاس Random چیزی داره که بشه بهش فهموند عدد تکراری تولید نکنه؟ یا باید خودم براش الگوریتم بنویسم.
ممنون.
نقل قول: تولید اعداد تصادفی غیر تکراری
نقل قول:
آیا کلاس Random چیزی داره که بشه بهش فهموند عدد تکراری تولید نکنه؟ یا باید خودم براش الگوریتم بنویسم.
با سلام
باید خودمون براش الگوریتم بنویسیم
یک نمونه اینجاست https://barnamenevis.org/showthread.php?t=158885
نقل قول: تولید اعداد تصادفی غیر تکراری
من از این روش استفاده میکنم و مشکلی هم نداشتم تا حالا
string sqlCmd = "if not exists(Select Code from codelist where code = @code) insert into codelist(Code) Values(@Code)";
SqlConnection sqlConnection = new SqlConnection("Data Source=Client1;Initial Catalog=code;User ID=sa;Password=master");
SqlCommand sqlCommand = new SqlCommand(sqlCmd, sqlConnection);
sqlCommand.Parameters.Add("@Code",SqlDbType.Decima l);
Random clsRandom = new Random();
int index = 0;
sqlConnection.Open();
do
{
decimal d = (decimal)clsRandom.Next(10000000, 99999999);
sqlCommand.Parameters["@Code"].Value = d;
sqlCommand.ExecuteNonQuery();
index += 1;
} while (index < 40000);
sqlConnection.Close();
نقل قول: تولید اعداد تصادفی غیر تکراری
نقل قول:
من از این روش استفاده میکنم و مشکلی هم نداشتم تا حالا
روشی که شما پیاده کردید برای اضافه کردن به بانک هست.
من چیز دیگه ای رو مد نظر داشتم
ممنونم دوست من.
روش جالبی رو پیاده کرده بود در این لینک. من الگوریتم دیگه ای براش نوشته بودم.
نقل قول: تولید اعداد تصادفی غیر تکراری
نقل قول:
من از این روش استفاده میکنم و مشکلی هم نداشتم تا حالا
يه حلقه كه به تعداد مشخصي تكرار ميشه و بعدش
decimal d = (decimal)clsRandom.Next(10000000, 99999999);
خوب؟ چه تضميني وجود داره كه تكراري نباشه؟
نقل قول: تولید اعداد تصادفی غیر تکراری
سلام
میتوانید به دو روش غیر تکراری بودن رو چک کنید.
1- با قرار دادن اعداد بدست آمده در یک آرایه یا بافر
2- تغییر بازه ایجاد مثلا در مثالی که دوستان زدند بصورت زیر عمل کنید
for( int i=0; i<50000; i *=10)
decimal d = (decimal)clsRandom.Next(i, i*10);
نقل قول: تولید اعداد تصادفی غیر تکراری
نقل قول:
حلقه كه به تعداد مشخصي تكرار ميشه و بعدش
کد:
decimal d = (decimal)clsRandom.Next(10000000, 99999999);
خوب؟ چه تضميني وجود داره كه تكراري نباشه؟
این دوستمون تنها در کد T-SQL نوشتند که اگر کد تولید شده تکراری بود اضافه شدن انجام نشه.
نقل قول: تولید اعداد تصادفی غیر تکراری
var numberlist=from r in Enumerable.Range(1,20)
order by Guid.NewGuid();
توی یکی از پستهام چند مدلش نوشتم . یه جستجو کنید پیدا میشه
نقل قول: تولید اعداد تصادفی غیر تکراری
نقل قول:
خوب؟ چه تضميني وجود داره كه تكراري نباشه؟
تضمین تکراری نبودنش اون کد Sql که اول نوشتم