| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 387 人关注过本帖, 1 人收藏
标题:还是随机序列的问题,希望多多指教!
只看楼主 加入收藏
zhou31146001
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:303
专家分:131
注 册:2012-11-28
结帖率:93.94%
收藏(1)
已结贴  问题点数:20 回复次数:6 
还是随机序列的问题,希望多多指教!
A、T、C、G四个字符,只是要求A+T占总的%60,C+G占总的%40,这样的话A和T就在这总的%60内是随机生成的,C和G也是。当然这个%60也是会变化的。
    另外还有这次希望的结果是,比如随机序列50000长,那生成的文件中要有50个50000长又按上述碱基比例的随机序列,且每个随机序列是换行的,共50行。
    真的很麻烦大家,谢谢!!!
2013-11-22 11:35
baiqtd123456
Rank: 2
等 级:论坛游民
帖 子:8
专家分:78
注 册:2013-11-22
收藏
得分:15 
#include <stdio.h>
#include <string.h>

#define NUMBER 5000
#define ROUND  50

int main()
{
  FILE *fp = NULL;
  char rand_buff[NUMBER+1] = {0,};
  char rand_ret = 0;
  char char_arr1[2] = {'A', 'T'};
  char char_arr2[2] = {'C', 'G'};
  short AT_count = 0;
  short CG_count = 0;
  char AT_full_flag = 0;
  char CG_full_flag = 0;
  int i = 0, j = 0;

  fp = fopen("random", "a+");
  if(fp == NULL)
  {
    perror("fopen");
    return -1;
  }   

  srand(time(NULL));

  for(i = 0; i < ROUND; i++)
  {
    memset(rand_buff, 0, sizeof(rand_buff));
    AT_count = 0;
    CG_count = 0;
    AT_full_flag = 0;
    CG_full_flag = 0;
     
    for(j = 0; j < NUMBER; j++)
    {   
      rand_ret = (rand()%10+1);
      if(rand_ret <= 6)
      {   
        if(!AT_full_flag)
        {   
          rand_buff[j] = char_arr1[rand_ret%2];
          AT_count++;
          if(AT_count >= (0.6*NUMBER))
            AT_full_flag = 1;
        }   
        else
        {   
          j--;
          continue;
        }   
      }   
      else
      {   
        if(!CG_full_flag)
        {   
          rand_buff[j] = char_arr2[rand_ret%2];
          CG_count++;
          if(CG_count >= (0.4*NUMBER))
            CG_full_flag = 1;
        }
        else
        {
          j--;
          continue;
        }
      }
    }

    rand_buff[NUMBER] = '\n';
    fwrite(rand_buff, sizeof(rand_buff), 1, fp);
  }

  fclose(fp);
  return 0;
}

[ 本帖最后由 baiqtd123456 于 2013-11-22 15:21 编辑 ]
2013-11-22 15:02
zhou31146001
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:303
专家分:131
注 册:2012-11-28
收藏
得分:0 
回复 2楼 baiqtd123456
您好,非常感谢您!
刚才我运行了一下,显示27和39行有问题,
我尝试改了一下,没有发现根源,
希望您再麻烦一下,谢谢!!!
2013-11-22 16:42
pink_duo
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:209
专家分:1054
注 册:2013-11-5
收藏
得分:5 
头文件
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>

埋头做牛,抬头做人,低头做狗
2013-11-22 17:16
confused_01
Rank: 2
等 级:论坛游民
帖 子:12
专家分:25
注 册:2013-11-7
收藏
得分:0 
卤煮学生物的?
2013-11-22 17:39
zhou31146001
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:303
专家分:131
注 册:2012-11-28
收藏
得分:0 
谢谢2楼和4楼,谢谢!!!!
2013-11-22 17:53
zhou31146001
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:303
专家分:131
注 册:2012-11-28
收藏
得分:0 
回复 5楼 confused_01
学生物物理
2013-11-22 17:54
快速回复:还是随机序列的问题,希望多多指教!
数据加载中...
 
   



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

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