Hur gör man för att inte få samma tal två gånger när man använder Random i C#

Medlem
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

Medlem

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.

Medlem

Kan nog hjälpa dig. Kolla PM

Medlem

txtKundnummer.Text = System.Guid.NewGuid.ToString();

Medlem
Skrivet av dalle:

txtKundnummer.Text = System.Guid.NewGuid.ToString();

En GUID är både bokstäver och siffror. Antar han bara ville ha siffror.

Medlem
Skrivet av Birchoff:

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,

Medlem
Skrivet av dalle:
Skrivet av Birchoff:

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!

Medlem
Skrivet av Birchoff:

Hmm... ah det kanske skulle kunna gå. Ingen dum ide!

Men samtidigt, ingen skulle vilja ha ett ~38 siffrors kundnummer... "Aningen" jobbigt att skriva in det.

Medlem

det jag vill skapa är ett kundnummer på åtta siffror och sen kolla om det redan finns i filen. Filen är uppbyggd så att jag t.ex har "Kundnummer"|"Namn"|"Personnummer"|osv... där tecknet | kommer fungera som en split.

Medlem

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.


signatur

//* Det finns inga Minor för Svärdet *\\

1
Skriv svar