VirtualBox

Changeset 11347 in vbox for trunk/include


Ignore:
Timestamp:
Aug 11, 2008 9:12:55 PM (17 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
34500
Message:

iprt/rand: Added a generic RTRandAdv API for use with any random number generator. Implemented the classic Park-Miller pseudo random number generator.

Location:
trunk/include/iprt
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/iprt/rand.h

    r11018 r11347  
    113113RTDECL(uint64_t) RTRandU64(void) RT_NO_THROW;
    114114
     115
     116/**
     117 * Create an instance of the default random number generator.
     118 *
     119 * @returns IPRT status code.
     120 * @param   hRand       Handle to the random number generator.
     121 */
     122RTDECL(int) RTRandAdvCreate(PRTRAND phRand) RT_NO_THROW;
     123
     124/**
     125 * Create an instance of the default pseudo random number generator.
     126 *
     127 * @returns IPRT status code.
     128 * @param   phRand      Where to store the handle to the generator.
     129 */
     130RTDECL(int) RTRandAdvCreatePseudo(PRTRAND phRand) RT_NO_THROW;
     131
     132
     133/**
     134 * Create an instance of the Park-Miller pseudo random number generator.
     135 *
     136 * @returns IPRT status code.
     137 * @param   phRand      Where to store the handle to the generator.
     138 */
     139RTDECL(int) RTRandAdvCreateParkMiller(PRTRAND phRand) RT_NO_THROW;
     140
     141/**
     142 * Destroys a random number generator.
     143 *
     144 * @returns IPRT status code.
     145 * @param   hRand       Handle to the random number generator.
     146 */
     147RTDECL(int) RTRandAdvDestroy(RTRAND hRand) RT_NO_THROW;
     148
     149/**
     150 * Generic method for seeding of a random number generator.
     151 *
     152 * The different generators may have specialized methods for
     153 * seeding, use one of those if you desire better control
     154 * over ther result.
     155 *
     156 * @returns IPRT status code.
     157 * @param   hRand       Handle to the random number generator.
     158 * @param   u64Seed     Seed.
     159 */
     160RTDECL(int) RTRandAdvSeed(RTRAND hRand, uint64_t u64Seed) RT_NO_THROW;
     161
     162/**
     163 * Fills a buffer with random bytes.
     164 *
     165 * @param   hRand       Handle to the random number generator.
     166 * @param   pv  Where to store the random bytes.
     167 * @param   cb  Number of bytes to generate.
     168 */
     169RTDECL(void) RTRandAdvBytes(RTRAND hRand, void *pv, size_t cb) RT_NO_THROW;
     170
     171/**
     172 * Generate a 32-bit signed random number in the set [i32First..i32Last].
     173 *
     174 * @returns The random number.
     175 * @param   hRand       Handle to the random number generator.
     176 * @param   i32First    First number in the set.
     177 * @param   i32Last     Last number in the set.
     178 */
     179RTDECL(int32_t) RTRandAdvS32Ex(RTRAND hRand, int32_t i32First, int32_t i32Last) RT_NO_THROW;
     180
     181/**
     182 * Generate a 32-bit signed random number.
     183 *
     184 * @returns The random number.
     185 * @param   hRand       Handle to the random number generator.
     186 */
     187RTDECL(int32_t) RTRandAdvS32(RTRAND hRand) RT_NO_THROW;
     188
     189/**
     190 * Generate a 32-bit unsigned random number in the set [u32First..u32Last].
     191 *
     192 * @returns The random number.
     193 * @param   hRand       Handle to the random number generator.
     194 * @param   u32First    First number in the set.
     195 * @param   u32Last     Last number in the set.
     196 */
     197RTDECL(uint32_t) RTRandAdvU32Ex(RTRAND hRand, uint32_t u32First, uint32_t u32Last) RT_NO_THROW;
     198
     199/**
     200 * Generate a 32-bit unsigned random number.
     201 *
     202 * @returns The random number.
     203 * @param   hRand       Handle to the random number generator.
     204 */
     205RTDECL(uint32_t) RTRandAdvU32(RTRAND hRand) RT_NO_THROW;
     206
     207/**
     208 * Generate a 64-bit signed random number in the set [i64First..i64Last].
     209 *
     210 * @returns The random number.
     211 * @param   hRand       Handle to the random number generator.
     212 * @param   i64First    First number in the set.
     213 * @param   i64Last     Last number in the set.
     214 */
     215RTDECL(int64_t) RTRandAdvS64Ex(RTRAND hRand, int64_t i64First, int64_t i64Last) RT_NO_THROW;
     216
     217/**
     218 * Generate a 64-bit signed random number.
     219 *
     220 * @returns The random number.
     221 */
     222RTDECL(int64_t) RTRandAdvS64(RTRAND hRand) RT_NO_THROW;
     223
     224/**
     225 * Generate a 64-bit unsigned random number in the set [u64First..u64Last].
     226 *
     227 * @returns The random number.
     228 * @param   hRand       Handle to the random number generator.
     229 * @param   u64First    First number in the set.
     230 * @param   u64Last     Last number in the set.
     231 */
     232RTDECL(uint64_t) RTRandAdvU64Ex(RTRAND hRand, uint64_t u64First, uint64_t u64Last) RT_NO_THROW;
     233
     234/**
     235 * Generate a 64-bit unsigned random number.
     236 *
     237 * @returns The random number.
     238 * @param   hRand       Handle to the random number generator.
     239 */
     240RTDECL(uint64_t) RTRandAdvU64(RTRAND hRand) RT_NO_THROW;
     241
     242
    115243/** @} */
    116244
  • trunk/include/iprt/types.h

    r11308 r11347  
    11471147#define NIL_RTTIMERLR                               ((RTTIMERLR)0)
    11481148
     1149/** Handle to a random number generator. */
     1150typedef struct RTRANDINT                           *RTRAND;
     1151/** Pointer to a random number generator handle. */
     1152typedef RTRAND                                     *PRTRAND;
     1153/** NIL random number genrator handle value. */
     1154#define NIL_RTRAND                                  ((RTRAND)0)
     1155
    11491156
    11501157/**
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette