| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 477 人关注过本帖
标题:无聊随手写了个SB东西
只看楼主 加入收藏
zkkpkk
Rank: 2
等 级:论坛游民
威 望:5
帖 子:489
专家分:28
注 册:2006-6-17
收藏
 问题点数:0 回复次数:1 
无聊随手写了个SB东西


using System;

namespace rendom
{
class Rand
{
private long seed; //随机数种子

//用系统时间作为随机种子
public Rand()
{
string str=DateTime.Now.Day.ToString();
str+=DateTime.Now.Hour.ToString();
str+=DateTime.Now.Minute.ToString();
str+=DateTime.Now.Second.ToString();
str+=DateTime.Now.Millisecond.ToString();
this.seed=long.Parse(str);
}
//用户自定义随机种子
public Rand(long Value)
{
this.seed=Value;
}

//产生非负伪随机数
public long Next()
{
long l=this.seed;
l=l*l;
string strTime = l.ToString();
int w=strTime.Length/3;
string str=\"\";
for(int i=w;i<strTime.Length-w;i++)
str+=strTime[i];
l=long.Parse(str);
return l;
}
//产生上限为Value的伪随机数
public long Next(long Value)
{
if(Value<0)
return -1;
long l=this.seed;
l=l*l;
string strTime = l.ToString();
int w=strTime.Length/3;
string str=\"\";
for(int i=w;i<strTime.Length-w;i++)
str+=strTime[i];
l=long.Parse(str);
return l%Value;
}
//产生下限为minValue上限为maxValue的伪随机数
public long Next(long minValue,long maxValue)
{
if(minValue<0 || maxValue<0 || minValue>maxValue)
return -1;
long l=this.seed;
l=l*l;
string strTime = l.ToString();
int w=strTime.Length/3;
string str=\"\";
for(int i=w;i<strTime.Length-w;i++)
str+=strTime[i];
l=long.Parse(str);
return l%(maxValue-minValue)+minValue;
}
//伪随机数填充指定的比特数组
public void NextBytes(byte []buffer)
{
long Value = 0;
Value=this.Next()%255;
for(int i=0;i<buffer.Length;i++)
{
Value=Value*Value;
string strTime = Value.ToString();
int w=strTime.Length/3;
string str=\"\";
for(int j=w;j<strTime.Length-w;j++)
str+=strTime[j];
Value=long.Parse(str);
Value=Value%255;
buffer[i]=(byte)Value;
}
}
//产生0.0到1.0的伪随机数
public double NextDouble()
{
long l=this.Next(0,100000);
if(l==100000)
return 1.0;
l=l*l;
string strTime=l.ToString();
int w=strTime.Length/3;
string str = \"0.\";
for(int i=w;i<strTime.Length-w;i++)
str+=strTime[i];
double d=double.Parse(str);
return d;
}
}
class AppMain
{
static int Main()
{
Rand rand=new Rand();
//产生伪随机数
long n=rand.Next();
Console.WriteLine(n.ToString());
//产生100内的伪随机数
n=rand.Next(100);
Console.WriteLine(n.ToString());
//产生20到30之间的伪随机数
n=rand.Next(20,30);
Console.WriteLine(n.ToString());
//产生0.0到1.0之间的伪随机数
b=rand.NextDouble();
Console.WriteLine(b.ToString());
Console.ReadLine();
}
}
}


发现我NextDouble的实现很无赖

[此贴子已经被作者于2007-5-9 11:25:15编辑过]

搜索更多相关主题的帖子: long private public 
2007-05-08 21:25
fyi1106
Rank: 1
等 级:新手上路
帖 子:327
专家分:0
注 册:2006-10-14
收藏
得分:0 

JavaScript forever!
2007-05-08 21:58
快速回复:无聊随手写了个SB东西
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.030567 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved