随机数
来源:互联网 发布:java企业网站源码下载 编辑:程序博客网 时间:2024/04/26 03:11
在WIn32 c/c++编程中使用rand()函数(用srand()设置种子)就可以获得一个随机数
然后将得到的随机数处理就可以得到某一范围内的随机数
用汇编来实现也很简单
随机数关键要获得一个每一次都不同的数
RDTSC这个指令可以获得计算机启动以来CPU运行的周期数,
其结果保存在EDX:EAX中,EDX是高位,EAX是低位
以下为getRandom()函数的源码
====getrandom.asm====
segment .text
global getRandom
getRandom:
push ebp
mov ebp,esp
rdtsc
shr eax,2
mov ebx,[ebp+12]
add ebx,1
sub ebx,[ebp+8]
cdq
idiv ebx
add edx,[ebp+8]
mov eax,edx
mov esp,ebp
pop ebp
ret
=======main.c========
#include<stdio.h>
int getRandom(int a,int b);
int main()
{
int i;
int t;
float s[16]={0};
float p;
for(i=0;i<500000;i++)
{
t=getRandom(20,35);
//printf("%d ",t);
s[t-20]++;
}
printf("/nresult:/n");
for(i=0;i<16;i++)
{
p=s[i]/500000;
printf("%d has %d ,Percent is %f/n",i+20,(int)s[i],p);
}
return 0;
}
========build.bat=====
nasm -f win32 getrandom.asm --prefix _
cl -c main.c
link main.obj getrandom.obj
if exist getrandom.obj del getrandom.obj
if exist main.obj del main.obj
=====================
- 随机数
- 随机数
- 随机数。。。
- 随机数
- 随机数
- 随机数
- 随机数
- 随机数
- 随机数
- 随机数
- 随机数
- 随机数
- 随机数
- 随机数
- 随机数
- 随机数
- 随机数
- 随机数
- 12种能增强记忆力的食品
- 通用数据库连接管理类
- 最大公约数算法
- PHP5+APACHE2.2配置成功案例
- C#强化系列文章三:实验分析C#中三种计时器使用异同点
- 随机数
- DATAWINDOW技巧2
- Structs2使用心得
- c# winform---checkedListBox控件應用
- 末日帝国——Agile公司的困境 (5)
- asp.net treeview递归写法
- 梦见你了
- 网站开发WEB前端高性能优化之JavaScript优化细节
- j2ee学习过程中的问题总结