generarea unui număr aleatoriu între 0 și 1 returnează întotdeauna 0 [duplicat] (Programare, C#, Random)

SteinTheRuler a intrebat.

Încerc să returnez un număr aleatoriu între 0 și 1, dar întotdeauna returnează 0.

Cod:

int rnd = new Random().Next(0, 1);

Comentarii

  • Îl atribuiți la un int… folosiți o variabilă float sau double…  > Por gtosto.
  • Ar trebui să instanțiezi Random o singură dată și să obții următorul din el și nu să-l creezi de fiecare dată din nou –  > Por Samvel Petrosov.
  • După cum spune acest răspuns: „Valoarea maximă pentru limita superioară din metoda Next() este exclusivă – intervalul include minValue, maxValue-1 și toate numerele intermediare.”. Utilizați int rnd = new Random().Next(0, 2); –  > Por ColinM.
  • între 0 și 1, sau fie 0 fie 1? Codul dvs. nu este în concordanță cu întrebarea dvs. –  > Por CoolBots.
2 răspunsuri
CoolBots

Random.Next ia un inclusiv min, și un exclusiv max – astfel încât singurul rezultat posibil pentru Random.Next(0, 1) este 0.

Dacă încercați să generați un zero sau un 1, cum ar fi o aruncare a unei monede, utilizați:

int result = new Random().Next(0, 2);

Pentru a genera un număr între 0 și 1, schimbați-l în:

double result = new Random().NextDouble(0, 1);

Este greu de spus din exemplul dvs., deoarece spuneți „între”, dar atribuirea rezultatului la un număr intși apelarea unei funcții care returnează un număr int.

Mureinik

Nu există numere întregi între 0 și 1. Deoarece limita inferioară este inclusivă, iar limita superioară este exclusivă, veți obține întotdeauna un 0. Ar trebui să utilizați NextDouble în locul lui:

double rnd = new Random().NextDouble();

Tags:,