标题:新人,求指点(一段随机算法)
只看楼主
农民哟
Rank: 1
等 级:新手上路
帖 子:8
专家分:4
注 册:2018-10-20
结帖率:100%
已结贴  问题点数:20 回复次数:8 
新人,求指点(一段随机算法)
本人是初学者,出于爱好现在自学编程。
该随机算法我是从书本上学习练手的,用的是DEV-C++(电脑是微软surface pro3;win10系统  X64架构)
不知道为什么,有时候有些代码可以直接编译过去,可以运行(但是同样的代码有时候就是不行;真心求指导)
不知道为什么从书本上的代码抄写练手总是编译失败;
求各位老师指点一下,以下是代码:
#include<iostream>                     //将文件iostream中的代码嵌入程序中
#include<ctime>                        //产生随机数的随机函数要打开的库
#include<iomanip>                    //参数输出
using namespace std;                //开辟空间
int main()
{
    int a[10];
    int i,j=0,x,n,s=0;
    memset(a,0x0,sizeof a);            //给数组a赋初值0          (就是在这行过不去)
    srand(time(0)) ;                //以时间做为随机数的种子
    cout<<"Input n=" ;
    cin=n;
    for(i=0;i<n;i++)
    {
        for(j=0;j<10;j++)
        {
            x=rand()%2;                //产生0或1的随机数
            s=s+x;                    //s累计每层选择的情况,最后落的格子数
        }
        a[s]=a[s]+1;                //相应的格子数累加
        s=0;
    }
    for(i=0;i<10;i++) cout<<setw(5)<<a[i];        //输出每个格子的落球数
    cout<<endl;
    system("pause");
    return 0;
}
以下是系统提示
9    23    E:\练习手册\随机现象.cpp    [Error] 'memset' was not declared in this scope
10    15    E:\练习手册\随机现象.cpp    [Error] 'srand' was not declared in this scope
12    5    E:\练习手册\随机现象.cpp    [Error] no match for 'operator=' (operand types are 'std::istream {aka std::basic_istream<char>}' and 'int')
12    5    E:\练习手册\随机现象.cpp    [Note] candidate is:
40    0    D:\Program Files (x86)\Dev-Cpp\MinGW64\lib\gcc\x86_64-w64-mingw32\4.9.2\include\c++\iostream    In file included from D:/Program Files (x86)/Dev-Cpp/MinGW64/lib/gcc/x86_64-w64-mingw32/4.9.2/include/c++/iostream

1        E:\练习手册\随机现象.cpp                     from E:\练习手册\随机现象.cpp

58    11    D:\Program Files (x86)\Dev-Cpp\MinGW64\lib\gcc\x86_64-w64-mingw32\4.9.2\include\c++\istream    [Note] std::basic_istream<char>& std::basic_istream<char>::operator=(const std::basic_istream<char>&)

58    11    D:\Program Files (x86)\Dev-Cpp\MinGW64\lib\gcc\x86_64-w64-mingw32\4.9.2\include\c++\istream    [Note] no known conversion for argument 1 from 'int' to 'const std::basic_istream<char>&'

17    11    E:\练习手册\随机现象.cpp    [Error] 'rand' was not declared in this scope
搜索更多相关主题的帖子: 随机 std 手册 现象 cpp 
2018-10-21 23:56
rohalloway
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:97
专家分:405
注 册:2018-9-28
得分:5 
cin = n;  改成 cin >> n;
2018-10-22 02:54
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:5 
另外
memset 声明在 <cstring> 中
srand 声明在 <cstdlib> 中
rand 声明在 <cstdlib> 中
2018-10-22 09:59
农民哟
Rank: 1
等 级:新手上路
帖 子:8
专家分:4
注 册:2018-10-20
得分:0 
回复 2楼 rohalloway
抄错了,这个不是主要问题
2018-10-22 16:38
农民哟
Rank: 1
等 级:新手上路
帖 子:8
专家分:4
注 册:2018-10-20
得分:0 
回复 3楼 rjsp
感谢大佬指点,请问下这个一般需要怎么去声明?
2018-10-22 16:39
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:10 
#include <cstring>
#include <cstdlib>

顺便问一下,你这程序实现什么功能,我没能看懂
2018-10-22 16:56
农民哟
Rank: 1
等 级:新手上路
帖 子:8
专家分:4
注 册:2018-10-20
得分:0 
回复 6楼 rjsp
这是一段《高尔顿板实验》
2018-10-24 12:22
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
回复 7楼 农民哟
程序代码:
#include <iostream>
#include <iomanip>
#include <ctime>
#include <cstdlib>
using namespace std;

int main( void )
{
    size_t n;
    cout << "输入小球的数量: ";
    cin >> n;

    unsigned a[10] = {};
    srand( unsigned(time(NULL)) );
    for( size_t i=0; i!=n; ++i )
    {
        size_t index = 0;
        for( size_t j=0; j!=9; ++j )
            index += (rand() > RAND_MAX/2);
        ++a[index];
    }

    for( size_t i=0; i!=10; ++i )
        cout << setw(5) << a[i];
}

但,关于随机数的函数,建议你看看 https://zh.


2018-10-24 13:02
农民哟
Rank: 1
等 级:新手上路
帖 子:8
专家分:4
注 册:2018-10-20
得分:0 
#include<iostream>
#include<ctime>
#include<iomanip>
#include<string.h>
#include<time.h>
#include<stdlib.h>
using namespace std;

int main()
{
    int a [10];
    int i,j,x,n,s=0;
   
    memset(a,0x0,sizeof a);
    srand(time(0));
    cout<<"Input n=";
    cin>>n;
   
    for(i=0;i<n;i++)
    {
        for(j=0;j<10;j++)
        {
            x=rand()%2;
            s=s+x;
            
        }
        a[s]=a[s]+1;
        s=0;
    }
    for(i=0;i<10;i++)cout<<setw(5)<<a[i];
    cout<<endl;
    system("pause");
    return 0;
   
}
最终答案,事实告诉我课本也不一定是正确的
2018-10-29 18:08



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-490583-1-1.html




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

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