把这个python转换成C语言代码 20

把这个python转换成C语言代码importrandomn,k=30,12N=10000000cnt=0for_inrange(N):GG=[random.random... 把这个python转换成C语言代码import random

n, k = 30, 12
N = 10000000

cnt = 0
for _ in range(N):
GG = [random.random() for _ in range(n)]
for i in range(k-1, n):
if GG[i] > max(GG[:k-1]):
choice = i
if GG[choice] == max(GG):
cnt += 1
print(cnt)
break
print(cnt/N)
展开
 我来答
wenjie1024
2017-03-08 · TA获得超过2381个赞
知道大有可为答主
回答量:1737
采纳率:72%
帮助的人:861万
展开全部
python不像C语言,有{ }
缩进很重要的,你要贴出有缩进的代码才行
追问
这个就是一个模拟37%法则的算法。或者能不能python加个注释?有部分没理解
洛九璃钰
2018-06-16
知道答主
回答量:97
采纳率:50%
帮助的人:24.2万
展开全部
# -*- coding: utf-8 -*-

import random

n, k = 30, 12
N = 10000000
cnt = 0

for _ in range(N):
    GG = [random.random() for _ in range(n)]
    for i in range(k-1, n):
        if GG[i] > max(GG[:k-1]):
            choice = i
            if GG[choice] == max(GG):
                cnt += 1
            break

print(cnt)
print(cnt/N)
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define n 30
#define k 12
#define N 10000000

float max(float x[], int id)
{
    float maxn = 0.0;

    for (size_t i = 0; i < id; i++)
    {

        if (maxn < x[i])
        {
            maxn = x[i];
        }
    }
    return maxn;
}

int maxi(float x[], int id)
{
    int maxn = 0;

    for (size_t i = 0; i < id; i++)
    {

        if (x[maxn] < x[i])
        {
            maxn = i;
        }
    }
    return maxn;
}

float *GGer()
{
    static float res[n + 2];
    for (size_t i = 0; i < n; i++)
    {
        res[i] = (float)(rand() * rand()) / (float)(RAND_MAX * RAND_MAX + 1);
    }
    res[n] = max(res, k - 1);
    res[n + 1] = max(res, n);
    return res;
}

int cnter(float GG[])
{
    static int res;

    for (size_t i = k - 1; i < n; i++)
    {
        if (GG[i] > GG[n])
        {
            int choice = i;
            if (GG[choice] == GG[n + 1])
            {
                res++;
            }
            break;
        }
    }
    return res;
}

int main(int argc, char const *argv[])
{
    // printer(mainloop(GGer, cnter([0])));
    float *g;
    int cnt;

    srand(time(NULL)); //设置随机数种子

    for (size_t i = 0; i < N; i++)
    {
        g = GGer();
        cnt = cnter(g);
    }

    printf("CNT=\t%d\n", cnt);
    printf("CNT/N=\t%f\n", (cnt / (float)N));
    return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式