Algorithm 函数,可在75%的时间内打印true
这个问题不是针对任何特定的面试或任务,只是一个出现在Quora上但没有人回答的问题。 您将如何实现一个函数(任何语言)在75%的时间内返回true。统计不是我的强项,对我来说,我会这样做,但我有一点是错误的Algorithm 函数,可在75%的时间内打印true,algorithm,Algorithm,这个问题不是针对任何特定的面试或任务,只是一个出现在Quora上但没有人回答的问题。 您将如何实现一个函数(任何语言)在75%的时间内返回true。统计不是我的强项,对我来说,我会这样做,但我有一点是错误的 void retTrue(){ srand(time(NULL)); if( (rand() % 4) == 0 ) return true; else return false; } 总结评论中的建议: 在某处播种你的RNG: srand(time(NULL))
void retTrue(){
srand(time(NULL));
if( (rand() % 4) == 0 ) return true;
else return false;
}
总结评论中的建议: 在某处播种你的RNG:
srand(time(NULL));
那么函数就简单了:
bool retTrue(){
return (rand()%4 != 0);
}
总结评论中的建议: 在某处播种你的RNG:
srand(time(NULL));
那么函数就简单了:
bool retTrue(){
return (rand()%4 != 0);
}
您拥有的将在25%的时间内返回
true
这个怎么样
bool retTrue()
{
srand(time(NULL));
if ( (rand() % 4) == 0 ) return false;
else return true;
}
但这也会在75%的时间内返回true
75%——每四次返回一次,就像时钟一样:
static int counter = 1; // global or out-of-scope variable
bool retTrue_anotherOne()
{
bool returnValue;
if ((counter % 4) == 0)
counter = 0;
returnValue = false;
else
returnValue = true;
counter++;
return returnValue;
}
或者这也会在75%的时间内返回true
s——连续返回75true
s,然后返回25false
s:
static int counter = 0; // global or out-of-scope variable
bool retTrue_anotherOne()
{
bool returnValue;
if (counter < 75)
returnValue = true;
else
returnValue = false;
counter = (counter + 1) % 100;
return returnValue;
}
static int counter=0;//全局变量或范围外变量
bool retTrue_anotherOne()
{
布尔返回值;
如果(计数器<75)
returnValue=true;
其他的
returnValue=false;
计数器=(计数器+1)%100;
返回值;
}
这完全取决于你想要什么样的“75%的时间”分配 您所拥有的将在25%的时间内返回
true
这个怎么样
bool retTrue()
{
srand(time(NULL));
if ( (rand() % 4) == 0 ) return false;
else return true;
}
但这也会在75%的时间内返回true
75%——每四次返回一次,就像时钟一样:
static int counter = 1; // global or out-of-scope variable
bool retTrue_anotherOne()
{
bool returnValue;
if ((counter % 4) == 0)
counter = 0;
returnValue = false;
else
returnValue = true;
counter++;
return returnValue;
}
或者这也会在75%的时间内返回true
s——连续返回75true
s,然后返回25false
s:
static int counter = 0; // global or out-of-scope variable
bool retTrue_anotherOne()
{
bool returnValue;
if (counter < 75)
returnValue = true;
else
returnValue = false;
counter = (counter + 1) % 100;
return returnValue;
}
static int counter=0;//全局变量或范围外变量
bool retTrue_anotherOne()
{
布尔返回值;
如果(计数器<75)
returnValue=true;
其他的
returnValue=false;
计数器=(计数器+1)%100;
返回值;
}
这完全取决于你想要什么样的“75%的时间”分配 您不想在函数内部调用srand。time()的分辨率为1秒。如果我在不到一秒钟的时间内调用该函数100次,每次都会得到相同的结果 第二个随机数发生器通常不是一个很好的随机数发生器,你不可能从中得到一个完美的75%的比率 第三,返回类型是void,它不会返回除编译器错误以外的任何内容 那么:
bool retTrue(){
static unsigned int n = 0;
n++;
return n % 4 != 0;
}
没有提到它需要是随机的。您不想在函数中调用srand。time()的分辨率为1秒。如果我在不到一秒钟的时间内调用该函数100次,每次都会得到相同的结果 第二个随机数发生器通常不是一个很好的随机数发生器,你不可能从中得到一个完美的75%的比率 第三,返回类型是void,它不会返回除编译器错误以外的任何内容 那么:
bool retTrue(){
static unsigned int n = 0;
n++;
return n % 4 != 0;
}
没有提到它需要是随机的。为什么不在java中使用
随机数生成器生成数字呢。我认为这应该打印True
75%的给定时间rand()
以相同的概率生成数字。如果这是错误的,请纠正我
伪代码
int generateNumber()
{
Random r = new Random();
int seed = r.nextInt(100);
if(seed < 25){
return false;
}else
{
return true;
}
}
int generateNumber()
{
随机r=新随机();
int seed=r.nextInt(100);
如果(种子<25){
返回false;
}否则
{
返回true;
}
}
为什么不在java中使用随机数生成器生成数字呢。我认为这应该打印True
75%的给定时间rand()
以相同的概率生成数字。如果这是错误的,请纠正我
伪代码
int generateNumber()
{
Random r = new Random();
int seed = r.nextInt(100);
if(seed < 25){
return false;
}else
{
return true;
}
}
int generateNumber()
{
随机r=新随机();
int seed=r.nextInt(100);
如果(种子<25){
返回false;
}否则
{
返回true;
}
}
您的函数有一个潜在问题rand()
将返回一个介于0
和rand\u MAX
之间的随机整数,尽管没有真正的保证,但RNG的设计目的是在该间隔内生成均匀分布。但是,当您使用模运算符时,如
(rand() % 4) == 0
您只查看随机数的底部两位。问题是,在一些随机数生成器中,低阶位的随机性可能非常弱。获得25%时间内发生的一系列独立随机事件的更安全方法是
((double) rand() / (double) RAND_MAX) < 0.25
((双)兰德()/(双)兰德_MAX)<0.25
rand()
作为整个间隔[0,rand\u MAX]
上的一个元素的随机性比单个位的随机性更可靠 您的函数有一个潜在问题rand()
将返回一个介于0
和rand\u MAX
之间的随机整数,尽管没有真正的保证,但RNG的设计目的是在该间隔内生成均匀分布。但是,当您使用模运算符时,如
(rand() % 4) == 0
您只查看随机数的底部两位。问题是,在一些随机数生成器中,低阶位的随机性可能非常弱。获得25%时间内发生的一系列独立随机事件的更安全方法是
((double) rand() / (double) RAND_MAX) < 0.25
((双)兰德()/(双)兰德_MAX)<0.25
rand()
作为整个间隔[0,rand\u MAX]
上的一个元素的随机性比单个位的随机性更可靠 为什么这是错误的?假设rand()
在均匀分布上返回一个随机整数,这似乎很好。可以缩短为return(rand()%4!=0)
并且返回类型可能应该是bool,否则我看不出有问题。我想你的意思是return(rand()%4!=0)
?如果您希望在75%的时间内返回true
true,您不想切换您的return true和return false吗?您还想为RNG设定一次种子,而不是每次和ev