Eventuali duplicati:
Random number generator only generating one random numberIl codice viene eseguito correttamente solo quando lo si passa attraverso il debugger?
ero un po 'perplesso con questo pochi istanti fa. Ho il codice seguente:
public blockType generateRandomBlock()
{
Random random = new Random();
int makeBlockOfType = random.Next(0, 100);
blockType t = blockType.normal;
if (makeBlockOfType <= 80 && makeBlockOfType >= 60)
{
t = blockType.blue;
}
else if (makeBlockOfType > 80 && makeBlockOfType <= 95)
{
t = blockType.orange;
}
else if (makeBlockOfType > 95 && makeBlockOfType <= 100)
{
t = blockType.green;
}
return t;
}
abbastanza semplice, esso restituisce un valore enum
basata su un numero generato in modo casuale (base del tempo di sistema). Sfortunatamente per qualche strana ragione, ho tutti i blocchi di un colore o dell'altro anche se questo è valido per ogni singolo blocco inserito nel gioco. Tuttavia, quando passo a questo con il debugger e poi vedo i risultati dopo un po 'di corsa, vedo che i blocchi ora sono multi-colorati in base alle possibilità offerte. Sono un po 'confuso sul motivo per cui questo sta accadendo.
Per questo sto usando MonoGame che utilizza il compilatore Mono al posto di quello Microsoft. Potrebbe essere questo il problema? Ho provato a mettere questo codice in linea nel costruttore da dove viene chiamato, ma sto ottenendo lo stesso risultato (suppongo che il compilatore inline il codice comunque).
Ho provato a riavviare Visual Studio separatamente invece di lasciare che la corsa esegua la compilazione; nessun cambiamento.
Qualsiasi suggerimento e aiuto sono molto apprezzati!
tenta di spostare la creazione a caso fuori del metodo, che dovrebbe aiutare. –
'new Random()' seed che usa il tempo, che rimane costante per diversi millisecondi. – CodesInChaos
La ragione per cui funziona nel debug è che c'è tempo tra le chiamate e Random in realtà ottiene semi diversi. – Archy