Willekeurig gegenereerde getallen hebben vele toepassingen in computerprogramma's , zoals het creëren van onvoorspelbaarheid in games , modellering en simulaties uitvoeren encryptie . Java levert twee technieken voor het genereren van willekeurige getallen . De Math bibliotheek biedt een eenvoudige , maar handige , willekeurige methode voor het genereren van een willekeurige floating point waarde tussen 0 en 1,0 . De Random -klasse biedt flexibelere willekeurig getal genererende mogelijkheden . willekeurige getallen generators worden gebruikt bij het programmeren van kansspelen . Basics Een random number generator is een routine ontwikkeld om een numerieke waarde die lijkt te toevallig gekozen produceren . Op Java , zoals met alle programmeertalen , de waarden gegenereerd door Math.random ( ) en de Willekeurige klasse verschijnen willekeurig, maar eigenlijk niet. Daarom worden dergelijke methoden gezegd dat pseudo - willekeurige getallen produceren Eigenschappen Pseudo - random number generators hebben twee fundamentele eigenschappen : . . Distributie en zaad < Br> " verdeling " verwijst naar de frequentie waarbij elke waarde in een reeks gegenereerde getallen weergegeven . De meeste van willekeurige werkwijzen Java produceren uniforme verdeling van getallen , zodat er geen een waarde vaker voorkomen dan andere . De Random klasse heeft een methode , nextGaussian , welke nummers dat een Gauss ( ook " normaal" of " bell curve" ) verdeling volgen genereert . Het "zaad " is een nummer dat wordt gebruikt om een pseudo - willekeurig getal initialiseren generator . Aangezien hetzelfde zaad zal een pseudo - random number generator dezelfde reeks getallen produceren wanneer genoemd volgens dezelfde methoden en parameters . De mogelijkheid om een reeks getallen te reproduceren is nuttig bij het debuggen , testen en andere scenario's waar opnieuw een applicatie draaiende omgeving nodig is . Math.random ( ) Math.random ( ) methode is een eenvoudige pseudo - random number generator . Het wordt alleen gebruikt door te bellen Math.random ( ) . De methode retourneert een dubbele tussen 0,0 ( inclusief) en 1.0 ( exclusief) . De waarden geproduceerd volgens een uniforme verdeling . Als een ander bereik , type of distributie nodig zijn , moet de programmeur de resultaten werpen om het gewenste type en voeren aanvullende berekeningen om het gewenste resultaat te genereren . The Random Class De klasse Random is flexibeler dan Math.random ( ) , maar vergt wat meer moeite te gebruiken . Een instantie van de klasse Random is opgebouwd . De aannemer zal een lange integer als het zaad waarde te nemen , of als een zaadje waarde niet wordt verstrekt , wordt de huidige tijd te gebruiken in milliseconden als de standaard zaad. De Random klasse voorziet in een methode voor de vaststelling van het zaad na de bouw . Er zijn verschillende pseudo - willekeurige getal genererende werkwijzen in deze klasse , elk voorafgegaan door het woord " next ". De meeste van deze methoden terugkeren uniform verdeeld waarden over verschillende reeksen en van verschillende types , zoals integers , floating point waarden en Booleaanse waarden . De nextGaussian methode retourneert Gaussiaans verdeeld dubbelspel . De nextInt werkwijze kan een integer parameter die het boveneinde van de range wordt nemen . Overwegingen genereren een reeks getallen die niet kunnen worden voorspeld is soms gewenst , voor bijvoorbeeld , om te voorkomen dat spelers in staat om vals te spelen in games . De pseudo - willekeurige waarden die door verschillende instanties van de klasse Random kunnen worden gecombineerd om aanvullende willekeur voorzien in de resulterende set . Het implementeren van een niet-uniforme verdeling kan ook nuttig zijn . Java genereert pseudo - willekeurige getallen die ofwel een uniform of Gauss-verdeling volgen . Nonuniform distributies zijn nuttig , met name in simulaties om scenario's die voldoen aan specifieke uitkeringen in de werkelijkheid na te bootsen . Andere uitkeringen kan worden bereikt met behulp van de inverse cumulatieve verdelingsfunctie van de gewenste verdeling . Deze functie neemt een kans ( een waarde tussen 0,0 en 1,0 exclusief) als parameter . De nul resultaat van hetzij Math.random ( ) of een van de klasse Random methoden die een floating point waarde retourneert kan voor deze parameter . Zie het gedeelte Bronnen voor een link naar de Apache Math Library , die inverse methodes voor meerdere cumulatieve distributies biedt .
|