我有一个由真正随机字节构成的文件。我想要一个函数,该函数将从文件中取出一个字节并对其进行缩放,返回指定范围内的随机整数(这个单词是否合适?)。
public int getInt(int l, int h) throws IOException {
int m = (h - l) + 1; // number of ranges needed
int r = 256 / m; // size of byte range
int x = (r * m) - 1; // maximum allowable byte value
int b;
do {
try { // get random byte from file
b = ram.readUnsignedByte();
} catch (EOFException e) { // catch EOF, reset pointer
b = 255; ram.seek(0); // and set b to maximum value
} // so test will fail.
} while(b > x); // if byte is greater than
// allowable value, loop.
return (b / r) + l; // return random integer
} // within requested range
这是我的函数。我担心通过缩放文件中的真随机字节来破坏它们的随机性。我读到需要丢弃任何超过允许最大值的数字(例如对于0-9的数字,最大值为249,因为我只有7个值可以分配给10个不同的组)。请问我的实现是否正确?
此外,我想知道,仅仅通过使某些太大的字节无效,是否会以任何方式扭曲分布?
int l,int h
)内的随机数。 - chrissphinxh-l>255
,则创建“间隙”? - hyde