如何用c语言实现 m序列

Python020

如何用c语言实现 m序列,第1张

#include<stdio.h>

#include<math.h>

#define SIZE 31

int initializtion()

int calculate(int x,int y)

int print()

int rmove()

int total(int n)

int Q[SIZE],i,n,tmp

unsigned long j

void main()

{

initializtion()

for(j=0j<total(n)-1j++)

{

tmp=calculate(Q[n-1],Q[n-2])

rmove()

Q[0]=tmp

print()

}

getch()

}

int initializtion()

{

printf("welcome\n")

printf("pliease Input n (n<=30) (Tj copyringht):")

scanf("%d",&n)

Q[n]='\0'

for(i=0i<ni++)

Q[i]=1

for(i=0i<ni++)

printf("Q%d",i+1)

printf("\n")

for(i=0i<ni++)

printf(" %d",Q[i])

printf("\n")

return(0)

}

int calculate(int x,int y)

{

int temp

temp=x+y

switch(temp)

{

case0: temp=0break

case1: temp=1break

case2: temp=0break

}

return(temp)

}

int print()

{

for(i=0i<ni++)

printf(" %d",Q[i])

printf("\n")

return(0)

}

int rmove()

{

for(i=ni>1i--)

Q[i-1]=Q[i-2]

return(0)

}

int total(int n)

{

unsigned long x

x=pow(2,n)

return(x)

}

可以试下,看看

你是说要产生随机序列吗?

#include<stdio.h>

#include<stdlib.h>

#include<time.h>

main()

{int i

int[M](m的值自己定)

for(i=0i<Mi++)

srand( (unsigned)time( NULL ) )

int[i]=rand()

}

以上这个函数可以实现了

这里给你扩展学习下 用random也可以产生

还告诉你srand( (unsigned)time( NULL ) )是干什么用的。

#include <stdlib.h>

main()

{

int a[100],i/*定义数组存放100个数*/

for(i=0i<100i++)

a[i]=random(100)/*产生100以内的数*/

for(i=0i<100i++)

printf("%d ",a[i])/*打印输入*/

getch()

}

在C语言函数库中包含了一个产生随机数的函数:

int rand( void )

函数int rand( void )返回的是一个界于0~32767(0x7FFF)之

间的伪随机数,包括0和32767。注意,这里产生的是伪随机数,不是真正意

义上的随机数,看下面的程序

#include "stdlib.h"

#include "stdio.h"

void main( void )

{

/* Display a number. */

printf( " %6d\n", rand() )

getchar()

}

程序运行的结果是:

346

多次运行这个程序,发现每次产生的结果都是346(不同的机器可能产生

的结果不一样),这就是所谓的伪随机数。伪随机数是通过一个公式来运算

出来的,所以,每次产生的伪随机数都一样。那么,如何才能产生真正意义

上的随机数呢?这就有一个随机种子的问题。在C语言标准函数库中,有这

么一个函数:

void srand( unsigned int seed )

要产生真正意义上的随机数,那么就要求每次提供的种子不一样,一

般情况下,都设置时间为随机函数的种子。看下面的一段程序:

#include "stdlib.h"

#include "stdio.h"

#include "time.h"

void main( void )

{

int i

/* Seed the random-number generator with current time so that

the numbers will be different every time we run.

将当前时间设置成随机函数的种子,所以每次产生的数都不一样

*/

srand( (unsigned)time( NULL ) )

/* Display 10 numbers. */

for( i = 0i <10i++ )

printf( “ %6d\n”, rand() )

}

Output

6929

8026

21987

30734

20587

6699

22034

25051

7988

10104

每次运行这个程序,产生的随机数都不一样,这样就达到了随机数的要求了