我正在考虑代码的这一部分的不同实现:
unsigned int whyamIexisting=100000; // also good for me static unsigned ...
double rand_number_generation(){
// create random number [0,1]
static unsigned int rand_counter=0;
rand_counter++;
if( rand_counter > whyamIexisting) {
update_my_seed(time(NULL));
rand_counter=0;
}
// random number generation
return thats_your_gorgeous_numb(); // random algorithm
}
main(){
...modify whyamIexising
...use rand_number_generation() several times
...
}
我不应该使用全局变量吗?如果是,你会建议什么解决方案?
谢谢!
答案 0 :(得分:0)
如果您正在使用多个函数并使用全局变量,我建议您不要修改它,而是使用局部变量来存储它,然后进行修改。
我通常避免使用全局变量。 : - )
答案 1 :(得分:0)
那......走了!
double rand_number_generation(unsigned int whyamIexisting){
// create random number [0,1]
static unsigned int rand_counter=0;
rand_counter++;
if( rand_counter > whyamIexisting) {
update_my_seed(time(NULL));
rand_counter=0;
}
// random number generation
return thats_your_gorgeous_numb(); // random algorithm
}
main(){
unsigned int limit = 17;
...use rand_number_generation(limit) several times
...
}
在你的情况下,没有必要有一个全局变量。它只会使程序难以维持,如果它要增长。它没有在您给出的示例中添加任何内容。
答案 2 :(得分:0)
我不知道其他代码,因此它基于您发布的片段,可能完全错误。
whyamIexisting
是对运行rand_number_generation
的环境的描述,但它也描述了它的状态,与rand_counter
相同。
从标签我看到你用C ++编写,这是一种面向对象的语言。关于面向对象的事情是,你知道对象。可能并不是每个人都会同意我的看法(想想我的高中IT老师),但我个人认为把所有拥有它自己国家的东西都当作一种好的做法。对象是否包含whyamIexisting
字段,rand_counter
为另一个,rand_number_generation
为其方法(可能是whyamIexisting
的getter和setter)你的问题?
除非您不在代码中的任何其他位置使用whyamIexisting
,否则您只需将其设置为main,并将其作为参数传递给函数rand_number_generation
。