用代码写一个随机数不用rand()和srand()
时间: 2024-05-15 21:18:09 浏览: 11
可以使用时间戳作为随机数种子,再通过某种算法生成随机数。以下是一个简单的示例代码:
```python
import time
def generate_random_number():
current_time = int(time.time())
random_number = (current_time * 1103515245 + 12345) % (2**32)
return random_number
```
该函数使用当前时间戳作为种子,通过线性同余法生成随机数。注意,这个方法的随机性并不是非常高,可以根据自己的需求自行选择更好的算法。
相关问题
用c代码写一个随机数不用rand()和srand()
可以使用系统时间作为随机数发生器的种子,然后进行一些运算得到一个伪随机数。下面是一个示例代码:
```
#include <time.h>
int my_random() {
static int seed = 0;
if (seed == 0) {
seed = time(NULL);
}
seed = (seed * 214013 + 2531011) & 0x7fffffff;
return seed;
}
```
这里使用了线性同余法生成伪随机数,具体的算法原理可以参考相关资料。
用c代码写一个随机数不用rand()和srand()和线性同余法
可以使用系统时间来生成随机数。
首先,通过系统函数time(NULL)获取当前时间(以秒为单位),然后将其作为种子来生成随机数。为了增加随机性,可以使用时间的毫秒部分作为随机数生成的一部分。
下面是一个简单的示例代码:
```c
#include <stdio.h>
#include <time.h>
int main() {
int r;
struct timespec tm;
clock_gettime(CLOCK_REALTIME, &tm);
// 以秒为单位的时间作为种子
srand((unsigned int) tm.tv_sec);
// 通过时间的毫秒部分生成随机数
r = (tm.tv_nsec % 100) + 1;
printf("随机数为:%d\n", r);
return 0;
}
```
此代码将使用当前时间作为种子,将时间的毫秒部分取模后加1作为随机数。注意,这并不是一个完全随机的算法,但对于大多数情况下的随机数需求已经足够了。