Hur gör man för att inte få samma tal två gånger när man använder Random i C#
Som titeln kanske avslöjar så håller jag på med ett projekt med några andra och vi måste skapa slumpmässiga tal. Problemet är att vi vill inte att samma tal ska ges två gånger! Talen kommer sparas i en databas i .txt format. Koden jag använd för att randomisera är:
Random rdn = new Random();
txtKundnummer.Text = Convert.ToString(rdn.Next(10000000, 100000000));
Detta kommer sen att skrivas från textboxen till en .txt fil. Finns det någon sätt att skapa ett nytt randomiserat nummer och sedan kolla om det nummret finns i filen redan, och om det finns så skapa ett nytt (och sen hålla på så tills man får ett nummer som fungerar). Vore väldigt snällt om någon kunde hjälpa mig lite med detta!
/Payerl
Om ni ABSOLUT inte vill ha samma tal 2 gånger i mängden har ni inget annat val än att antingen filtrera och slumpa om varje gång ni får ett tal som redan genererats,
Eller att använda ett sjuuukt stort slumptal och ändån räkna med att där finns en väldigt liten chans att den genererar samma tal.
En GUID är både bokstäver och siffror. Antar han bara ville ha siffror.
Tänkte då han skrev: "Talen kommer sparas i en databas i .txt format", men man skulle kunna göra om guiden till bara siffror. 128-bitars int,
Hmm... ah det kanske skulle kunna gå. Ingen dum ide!
Själv har jag en databas för mitt android-program där jag sparar information. Vissa tabeller har speciella ID:n som jag inte vill ska kunna bli likadana, detta för att kunna länka och identifera dessa för andra tabeller.
T.e.x. så här ser min tabell för datagruppen projekt ut där.
String DATABASE_PROJECT_CREATE = "create table " + DATABASE_PROJECT_TABLE + " (" + KEY_PROJECT_ID + " integer primary key autoincrement, " + KEY_DATE + " TEXT, "+ KEY_PROJECTTYPE + " TEXT)";
Om jag nu minns rätt skall denna rad i ovan:
"integer primary key autoincrement,"
skapa en ny siffra hela tiden, dock stegvist och ej slumpmässigt. Dock om man öppnar en ny databas så blir ju det problem, då detta är lokalt kontrollerat för den specifika databasen som är.
Iallfall, om du hela tiden vill skapa slumpmässiga siffror får väl du ladda in numerärerna från databasen, och kolla av att ingen är likadan som den slumpmässiga siffra du får. Och om det skulle bli så, slumpa fram en ny siffra och iterera om igen för att kontrollera.
//* Det finns inga Minor för Svärdet *\\