注册 登录
编程论坛 Matlab

[求助]关于randn 函数的一个问题

zhao980745 发布于 2007-01-14 15:21, 3613 次点击
查了下资料
randn函数用于产生均值0。方差为1的随机序列

但是我输入如下语言
y=randn(1,100)
显示出来的随机序列数字,怎么有绝对值大于1的?
请哪位大虾解释下 ,大谢~

[此贴子已经被作者于2007-1-14 15:37:34编辑过]

6 回复
#2
hitzhang2007-01-15 10:32
这是正态分布
多大的数都有可能
#3
benben_11222007-01-16 17:41

转:rand()的用法
rand()不需要参数,它会返回一个从0到最大随机数的任意整数,最大随机数的大小通常是固定的一个大整数。 这样,如果你要产生0~10的整数,可以表达为:
  int N = rand() % 11;
这样,N的值就是一个0~10的随机数,如果要产生1~10,则是这样:
  int N = 1 + rand() % 10;
  总结来说,可以表示为:
  a + rand() % n
其中的a是起始值,n是整数的范围。
  a + rand() % (b-a+1) 就表示 a~b之间的一个随机数
若要0~1的小数,则可以先取得0~10的整数,然后均除以10即可得到随机到十分位的10个随机小数,若要得到随机到百分位的随机小数,则需要先得到0~100的10个整数,然后均除以100,其它情况依
此类推。

// C++随机函数(VC program)
#include <stdio.h>
#include <iostream>
#include <time.h>
using namespace std;
#define MAX 100
int main(int argc, char* argv[])
{
srand( (unsigned)time( NULL ) );//srand()函数产生一个以当前时间开始的随机种子
   for (int i=0;i<10;i++)
   cout<<rand()%MAX<<endl;//MAX为最大值,其随机域为0~MAX-1
   return 0;
}

#4
buptwang2007-01-19 23:12
回复:(zhao980745)[求助]关于randn 函数的一个问题...
randn 函数中的seed是怎么用的,见过有的程序用,但不明白什么意思。
看help也不懂,请高手指点。
#5
knight44232007-01-29 14:42
以下是引用buptwang在2007-1-19 23:12:07的发言:
randn 函数中的seed是怎么用的,见过有的程序用,但不明白什么意思。
看help也不懂,请高手指点。

是啊 那位高手给指点下啊
seed=[12345 54321];
rand('state',seed(1));randn('state',seed(2));
是什么作用呢!

#6
abingchem2007-01-29 19:11
seed就是做一个随机的种子,以这个种子为起始点进行随机,至于随机的算法有很多,基本的一种是大数求余法
从种子这个层面上来说,随机也不是很随机
#7
SoGa2007-02-01 11:37

谢谢 困扰我心里的**终于得到了解决 谢谢

1