C - 随机数生成器的问题

标签 c pointers random numbers generator

我在生成随机数并将值赋予指针时遇到问题。

我想在这里做什么:生成一个 1 到 1000 之间的数字,玩家将收到该数量的金币。 基础金显然是0。 虽然,由于某种原因,当我打印整数黄金数量时,有超过3000的情况,这显然是一个错误的迹象。

goldchange 部分是因为玩家会多次收到金币,我希望它每次都能发挥作用。尽管目前,由于我正在测试程序的这一部分,所以玩家仅获得一次金币。

由于我是一名初学者程序员,我想我做错了。 我应该如何正确执行此操作,以便整数 GOLD 具有正确的值?

int* gold=0;
int* goldchange;
srand(time(0));
goldchange=gold;
gold=gold+rand()%1000+1;
goldchange=gold-goldchange;
printf("You have received the following amount of gold: %d", goldchange);

printf("You have this many golds: %d", gold);

例如,这是上次发生的情况: 您已收到以下数量的金币:777 你有这么多金币:3108

但应该是777而不是3108...... (显然每次运行都会给出不同的数字,但这两个值永远不会相同......)

最佳答案

您将变量声明为指针:

int* gold=0;
int* goldchange;

然后继续将它们视为常规 int 变量。在给定的代码中,我认为没有理由将这些变量声明为指针。为什么不只是

int gold=0;
int goldchange;

关于C - 随机数生成器的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40819498/

相关文章:

c - 从 printf 输出中提取 float ,其格式为 %d

python - 在 python 中,random.uniform() 和 random.random() 有什么区别?

c++ - 函数坏指针运行时错误?

c - 生成范围 [l u] 内的随机数

c - 为什么 rand() 在 fork 之后不是那么随机?

c - 如何将宏定义从 "make"命令行参数 (-D) 传递给 C 源代码?

c - 允许跟踪具有特定模式的单词后两个单词出现的单词的算法

c - 如何在c中打印0x0000000而不是(nil)和0x08ffffff而不是0x8ffffff

c - (C) 段错误/错误 (11) ?我该如何找到原因?

c++ - 取消引用被转换为双指针的指针