Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Random 如何生成范围内的随机整数_Random_Fortran_Fortran90_Fortran95 - Fatal编程技术网

Random 如何生成范围内的随机整数

Random 如何生成范围内的随机整数,random,fortran,fortran90,fortran95,Random,Fortran,Fortran90,Fortran95,我正在写的一个程序要求我模拟基因的突变。如果基因的某个实例(J)被选择进行突变,它必须随机成为备选基因的预定义子集之一。这些离散基因由0到K-1范围内的整数标记,其中K等于等位基因总数 因此,基本上,我需要帮助编写代码,随机选择一个0到K-1范围内不等于J的整数。非常感谢您的帮助 program randtest implicit none real*4 :: u(5) integer :: i(5) integer :: k = 4 i

我正在写的一个程序要求我模拟基因的突变。如果基因的某个实例(J)被选择进行突变,它必须随机成为备选基因的预定义子集之一。这些离散基因由0到K-1范围内的整数标记,其中K等于等位基因总数

因此,基本上,我需要帮助编写代码,随机选择一个0到K-1范围内不等于J的整数。非常感谢您的帮助

program randtest

implicit none

  real*4        :: u(5)
  integer       :: i(5)
  integer       :: k = 4
  integer, dimension (1) :: seed = (/2817/)

  call random_seed(put=seed) 

  call random_number(u)

i = floor((k+1)*u) 

 print *, i

 end program randtest
另一个编辑:感谢到目前为止的所有帮助,我提出了以下内容,它忽略了我不能等于J的要求。然而,我遇到的另一个问题是,这个过程必须重复多次,并且由于每次使用相同的种子,I的值总是相同的。我应该如何确保种子的价值不会在每一代都保持不变?再次感谢您的帮助

program randtest

implicit none

  real*4        :: u(5)
  integer       :: i(5)
  integer       :: k = 4
  integer, dimension (1) :: seed = (/2817/)

  call random_seed(put=seed) 

  call random_number(u)

i = floor((k+1)*u) 

 print *, i

 end program randtest

对于集合{0,1,…,K-1},确实可以使用答案中给出的方法。复杂的是,J(0你可能会在这里找到你的答案:根据链接,用[0,K-2]替换[0,5](假设J在该区间内)。谢谢,到目前为止,我已经得出了以下结论。程序randtest implicit none real*4::u(5)integer::I(5)integer::K=4 integer,维度(1)::seed=(/2817/)call random\u seed(put=seed)调用随机数i=floor((k+1)*u)print*,i结束程序测试