Clicky

Fortran Wiki
random_seed (Rev #4, changes)

Skip the Navigation Links | Home Page | All Pages | Recently Revised | Authors | Feeds | Export |

Showing changes from revision #3 to #4: (追記) Added (追記ここまで) | (削除) Removed (削除ここまで) | (削除) Chan (削除ここまで)(追記) ged (追記ここまで)

Description

Restarts or queries the state of the pseudorandom number generator used by random_number.

If random_seed is called without arguments, it is(削除) initialized (削除ここまで)(追記) seeded (追記ここまで)(削除) to (削除ここまで)(削除) a (削除ここまで)(削除) default (削除ここまで)(削除) state. (削除ここまで)(削除) The (削除ここまで)(削除) example (削除ここまで)(削除) below (削除ここまで)(削除) shows (削除ここまで)(削除) how (削除ここまで)(削除) to (削除ここまで)(削除) initialize (削除ここまで)(削除) the (削除ここまで)(削除) random (削除ここまで)(削除) seed (削除ここまで) with(削除) a (削除ここまで)(削除) varying (削除ここまで)(削除) seed (削除ここまで)(削除) in (削除ここまで)(削除) order (削除ここまで)(削除) to (削除ここまで)(削除) ensure (削除ここまで)(削除) a (削除ここまで)(削除) different (削除ここまで) random(削除) number (削除ここまで)(追記) data (追記ここまで)(削除) sequence (削除ここまで)(追記) retrieved (追記ここまで)(削除) for (削除ここまで)(追記) from (追記ここまで)(削除) each (削除ここまで)(削除) invocation (削除ここまで)(削除) of (削除ここまで) the(削除) program. (削除ここまで)(追記) operating (追記ここまで)(削除) Note (削除ここまで)(追記) system. (追記ここまで)(削除) that (削除ここまで)(削除) setting (削除ここまで)(削除) any (削除ここまで)(削除) of (削除ここまで)(削除) the (削除ここまで)(削除) seed (削除ここまで)(削除) values (削除ここまで)(削除) to (削除ここまで)(削除) zero (削除ここまで)(削除) should (削除ここまで)(削除) be (削除ここまで)(削除) avoided (削除ここまで)(削除) as (削除ここまで)(削除) it (削除ここまで)(削除) can (削除ここまで)(削除) result (削除ここまで)(削除) in (削除ここまで)(削除) poor (削除ここまで)(削除) quality (削除ここまで)(削除) random (削除ここまで)(削除) numbers (削除ここまで)(削除) being (削除ここまで)(削除) generated. (削除ここまで)

Standard

Fortran 95 and later

Class

Subroutine

Syntax

call random_seed([size, put, get])

Arguments

  • size - (Optional) Shall be a scalar and of type default integer, with intent(out). It specifies the minimum size of the arrays used with the put and get arguments.

  • put - (Optional) Shall be an array of type default integer and rank one. It is intent(in) and the size of the array must be larger than or equal to the number returned by the size argument.

  • get - (Optional) Shall be an array of type default integer and rank one. It is intent(out) and the size of the array must be larger than or equal to the number returned by the size argument.

Example

(削除) subroutine (削除ここまで)(追記) program (追記ここまで)(削除) init_random_seed (削除ここまで)(追記) test_random_seed (追記ここまで)(削除) () (削除ここまで)(追記) 
 (追記ここまで)(削除) 
 (削除ここまで)(削除) use (削除ここまで)(削除)  (削除ここまで)(削除) iso_fortran_env (削除ここまで)(削除) , (削除ここまで)(削除)  (削除ここまで)(削除) only (削除ここまで)(削除) : (削除ここまで)(削除)  (削除ここまで)(削除) int64 (削除ここまで)(削除) 
 (削除ここまで)implicit none
 integer, allocatable :: seed(:)
 integer :: (削除) i (削除ここまで)(削除) , (削除ここまで)(削除)  (削除ここまで)n(削除) , (削除ここまで)(追記) 
 
 (追記ここまで)(削除)  (削除ここまで)(削除) un (削除ここまで)(削除) , (削除ここまで)(削除)  (削除ここまで)(削除) istat (削除ここまで)(削除) , (削除ここまで)(削除)  (削除ここまで)(削除) dt (削除ここまで)(削除) ( (削除ここまで)(削除) 8 (削除ここまで)(削除) ), (削除ここまで)(削除)  (削除ここまで)(削除) pid (削除ここまで)(削除) 
 (削除ここまで)(削除) integer (削除ここまで)(削除) ( (削除ここまで)(削除) int64 (削除ここまで)(削除) ) (削除ここまで)(削除)  (削除ここまで)(削除) :: (削除ここまで)(削除)  (削除ここまで)(削除) t (削除ここまで)(削除) 
 (削除ここまで)call random_seed(size = n)
 allocate(seed(n))
 (削除) ! First try if the OS provides a random number generator (削除ここまで)(削除) 
 (削除ここまで)(削除) open (削除ここまで)(削除) ( (削除ここまで)(削除) newunit (削除ここまで)(削除) = (削除ここまで)(削除) un (削除ここまで)(削除) , (削除ここまで)(削除)  (削除ここまで)(削除) file (削除ここまで)(削除) = (削除ここまで)(削除) "/dev/urandom" (削除ここまで)(削除) , (削除ここまで)(削除)  (削除ここまで)(削除) access (削除ここまで)(削除) = (削除ここまで)(削除) "stream" (削除ここまで)(削除) , (削除ここまで)(削除)  (削除ここまで)(削除) & (削除ここまで)(削除) 
 (削除ここまで)(削除) form (削除ここまで)(削除) = (削除ここまで)(削除) "unformatted" (削除ここまで)(削除) , (削除ここまで)(削除)  (削除ここまで)(削除) action (削除ここまで)(削除) = (削除ここまで)(削除) "read" (削除ここまで)(削除) , (削除ここまで)(削除)  (削除ここまで)(削除) status (削除ここまで)(削除) = (削除ここまで)(削除) "old" (削除ここまで)(削除) , (削除ここまで)(削除)  (削除ここまで)(削除) iostat (削除ここまで)(削除) = (削除ここまで)(削除) istat (削除ここまで)(削除) ) (削除ここまで)(削除) 
 (削除ここまで)(削除) if (削除ここまで)(削除)  (削除ここまで)(削除) ( (削除ここまで)(削除) istat (削除ここまで)(削除)  (削除ここまで)(削除) == (削除ここまで)(削除)  (削除ここまで)(削除) 0 (削除ここまで)(削除) ) (削除ここまで)(削除)  (削除ここまで)(削除) then (削除ここまで)(削除) 
 (削除ここまで)(削除) read (削除ここまで)(削除) ( (削除ここまで)(削除) un (削除ここまで)(削除) ) (削除ここまで)(削除)  (削除ここまで)(削除) seed (削除ここまで)(削除) 
 (削除ここまで)(削除) close (削除ここまで)(削除) ( (削除ここまで)(削除) un (削除ここまで)(削除) ) (削除ここまで)(削除) 
 (削除ここまで)(削除) else (削除ここまで)(削除) 
 (削除ここまで)(削除) ! Fallback to XOR:ing the current time and pid. The PID is (削除ここまで)(削除) 
 (削除ここまで)(削除) ! useful in case one launches multiple instances of the same (削除ここまで)(削除) 
 (削除ここまで)(削除) ! program in parallel. (削除ここまで)(削除) 
 (削除ここまで)call (削除) system_clock (削除ここまで)(削除) ( (削除ここまで)(削除) t (削除ここまで)(削除) ) (削除ここまで)(削除) 
 (削除ここまで)(削除) if (削除ここまで)(削除)  (削除ここまで)(削除) ( (削除ここまで)(削除) t (削除ここまで)(削除)  (削除ここまで)(削除) == (削除ここまで)(削除)  (削除ここまで)(削除) 0 (削除ここまで)(削除) ) (削除ここまで)(削除)  (削除ここまで)(削除) then (削除ここまで)(削除) 
 (削除ここまで)(削除) call (削除ここまで)(削除)  (削除ここまで)(削除) date_and_time (削除ここまで)(削除) ( (削除ここまで)(削除) values (削除ここまで)(削除) = (削除ここまで)(削除) dt (削除ここまで)(削除) ) (削除ここまで)(削除) 
 (削除ここまで)(削除) t (削除ここまで)(削除)  (削除ここまで)(削除) = (削除ここまで)(削除)  (削除ここまで)(削除) ( (削除ここまで)(削除) dt (削除ここまで)(削除) ( (削除ここまで)(削除) 1 (削除ここまで)(削除) ) (削除ここまで)(削除)  (削除ここまで)(削除) - (削除ここまで)(削除)  (削除ここまで)(削除) 1970 (削除ここまで)(削除) ) (削除ここまで)(削除)  (削除ここまで)(削除) * (削除ここまで)(削除)  (削除ここまで)(削除) 365_int64 (削除ここまで)(削除)  (削除ここまで)(削除) * (削除ここまで)(削除)  (削除ここまで)(削除) 24 (削除ここまで)(削除)  (削除ここまで)(削除) * (削除ここまで)(削除)  (削除ここまで)(削除) 60 (削除ここまで)(削除)  (削除ここまで)(削除) * (削除ここまで)(削除)  (削除ここまで)(削除) 60 (削除ここまで)(削除)  (削除ここまで)(削除) * (削除ここまで)(削除)  (削除ここまで)(削除) 1000 (削除ここまで)(削除)  (削除ここまで)(削除) & (削除ここまで)(削除) 
 (削除ここまで)(削除) + (削除ここまで)(削除)  (削除ここまで)(削除) dt (削除ここまで)(削除) ( (削除ここまで)(削除) 2 (削除ここまで)(削除) ) (削除ここまで)(削除)  (削除ここまで)(削除) * (削除ここまで)(削除)  (削除ここまで)(削除) 31_int64 (削除ここまで)(削除)  (削除ここまで)(削除) * (削除ここまで)(削除)  (削除ここまで)(削除) 24 (削除ここまで)(削除)  (削除ここまで)(削除) * (削除ここまで)(削除)  (削除ここまで)(削除) 60 (削除ここまで)(削除)  (削除ここまで)(削除) * (削除ここまで)(削除)  (削除ここまで)(削除) 60 (削除ここまで)(削除)  (削除ここまで)(削除) * (削除ここまで)(削除)  (削除ここまで)(削除) 1000 (削除ここまで)(削除)  (削除ここまで)(削除) & (削除ここまで)(削除) 
 (削除ここまで)(削除) + (削除ここまで)(削除)  (削除ここまで)(削除) dt (削除ここまで)(削除) ( (削除ここまで)(削除) 3 (削除ここまで)(削除) ) (削除ここまで)(削除)  (削除ここまで)(削除) * (削除ここまで)(削除)  (削除ここまで)(削除) 24_int64 (削除ここまで)(削除)  (削除ここまで)(削除) * (削除ここまで)(削除)  (削除ここまで)(削除) 60 (削除ここまで)(削除)  (削除ここまで)(削除) * (削除ここまで)(削除)  (削除ここまで)(削除) 60 (削除ここまで)(削除)  (削除ここまで)(削除) * (削除ここまで)(削除)  (削除ここまで)(削除) 1000 (削除ここまで)(削除)  (削除ここまで)(削除) & (削除ここまで)(削除) 
 (削除ここまで)(削除) + (削除ここまで)(削除)  (削除ここまで)(削除) dt (削除ここまで)(削除) ( (削除ここまで)(削除) 5 (削除ここまで)(削除) ) (削除ここまで)(削除)  (削除ここまで)(削除) * (削除ここまで)(削除)  (削除ここまで)(削除) 60 (削除ここまで)(削除)  (削除ここまで)(削除) * (削除ここまで)(削除)  (削除ここまで)(削除) 60 (削除ここまで)(削除)  (削除ここまで)(削除) * (削除ここまで)(削除)  (削除ここまで)(削除) 1000 (削除ここまで)(削除)  (削除ここまで)(削除) & (削除ここまで)(削除) 
 (削除ここまで)(削除) + (削除ここまで)(削除)  (削除ここまで)(削除) dt (削除ここまで)(削除) ( (削除ここまで)(削除) 6 (削除ここまで)(削除) ) (削除ここまで)(削除)  (削除ここまで)(削除) * (削除ここまで)(削除)  (削除ここまで)(削除) 60 (削除ここまで)(削除)  (削除ここまで)(削除) * (削除ここまで)(削除)  (削除ここまで)(削除) 1000 (削除ここまで)(削除)  (削除ここまで)(削除) + (削除ここまで)(削除)  (削除ここまで)(削除) dt (削除ここまで)(削除) ( (削除ここまで)(削除) 7 (削除ここまで)(削除) ) (削除ここまで)(削除)  (削除ここまで)(削除) * (削除ここまで)(削除)  (削除ここまで)(削除) 1000 (削除ここまで)(削除)  (削除ここまで)(削除) & (削除ここまで)(削除) 
 (削除ここまで)(削除) + (削除ここまで)(削除)  (削除ここまで)(削除) dt (削除ここまで)(削除) ( (削除ここまで)(削除) 8 (削除ここまで)(削除) ) (削除ここまで)(削除) 
 (削除ここまで)(削除) end (削除ここまで)(削除)  (削除ここまで)(削除) if (削除ここまで)(削除) 
 (削除ここまで)(削除) pid (削除ここまで)(削除)  (削除ここまで)(削除) = (削除ここまで)(削除)  (削除ここまで)(削除) getpid (削除ここまで)(削除) () (削除ここまで)(削除) 
 (削除ここまで)(削除) t (削除ここまで)(削除)  (削除ここまで)(削除) = (削除ここまで)(削除)  (削除ここまで)(削除) ieor (削除ここまで)(削除) ( (削除ここまで)(削除) t (削除ここまで)(削除) , (削除ここまで)(削除)  (削除ここまで)(削除) int (削除ここまで)(削除) ( (削除ここまで)(削除) pid (削除ここまで)(削除) , (削除ここまで)(削除)  (削除ここまで)(削除) kind (削除ここまで)(削除) ( (削除ここまで)(削除) t (削除ここまで)(削除) ))) (削除ここまで)(削除) 
 (削除ここまで)(削除) do (削除ここまで)(削除)  (削除ここまで)(削除) i (削除ここまで)(削除)  (削除ここまで)(削除) = (削除ここまで)(削除)  (削除ここまで)(削除) 1 (削除ここまで)(削除) , (削除ここまで)(削除)  (削除ここまで)(削除) n (削除ここまで)(削除) 
 (削除ここまで)(削除) seed (削除ここまで)(削除) ( (削除ここまで)(削除) i (削除ここまで)(削除) ) (削除ここまで)(削除)  (削除ここまで)(削除) = (削除ここまで)(削除)  (削除ここまで)(削除) lcg (削除ここまで)(削除) ( (削除ここまで)(削除) t (削除ここまで)(削除) ) (削除ここまで)(削除) 
 (削除ここまで)(削除) end (削除ここまで)(削除)  (削除ここまで)(削除) do (削除ここまで)(削除) 
 (削除ここまで)(削除) end (削除ここまで)(削除)  (削除ここまで)(削除) if (削除ここまで)(削除) 
 (削除ここまで)(削除) call (削除ここまで)(削除)  (削除ここまで)random_seed((削除) put (削除ここまで)(追記) get (追記ここまで)=seed)(削除) contains (削除ここまで)(追記) write (追記ここまで)(削除) 
 (削除ここまで)(削除) ! (削除ここまで)(追記) (*, (追記ここまで)(削除) This (削除ここまで)(削除) simple (削除ここまで)(削除) PRNG (削除ここまで)(削除) might (削除ここまで)(削除) not (削除ここまで)(削除) be (削除ここまで)(削除) good (削除ここまで)(削除) enough (削除ここまで)(削除) for (削除ここまで)(削除) real (削除ここまで)(削除) work, (削除ここまで)(削除) but (削除ここまで)(削除) is (削除ここまで)(削除) 
 (削除ここまで)(削除) ! (削除ここまで)(追記) *) (追記ここまで)(削除) sufficient (削除ここまで)(削除) for (削除ここまで)(削除) seeding (削除ここまで)(削除) a (削除ここまで)(削除) better (削除ここまで)(削除) PRNG. (削除ここまで)(削除) 
 (削除ここまで)(削除) function (削除ここまで)(追記) seed (追記ここまで)(削除) lcg (削除ここまで)(追記) 
 (追記ここまで)(削除) ( (削除ここまで)(削除) s (削除ここまで)(削除) ) (削除ここまで)(削除) 
 (削除ここまで)(削除) integer (削除ここまで)(削除)  (削除ここまで)(削除) :: (削除ここまで)(削除)  (削除ここまで)(削除) lcg (削除ここまで)(削除) 
 (削除ここまで)(削除) integer (削除ここまで)(削除) ( (削除ここまで)(削除) int64 (削除ここまで)(削除) ) (削除ここまで)(削除)  (削除ここまで)(削除) :: (削除ここまで)(削除)  (削除ここまで)(削除) s (削除ここまで)(削除) 
 (削除ここまで)(削除) if (削除ここまで)(削除)  (削除ここまで)(削除) ( (削除ここまで)(削除) s (削除ここまで)(削除)  (削除ここまで)(削除) == (削除ここまで)(削除)  (削除ここまで)(削除) 0 (削除ここまで)(削除) ) (削除ここまで)(削除)  (削除ここまで)(削除) then (削除ここまで)(削除) 
 (削除ここまで)(削除) s (削除ここまで)(削除)  (削除ここまで)(削除) = (削除ここまで)(削除)  (削除ここまで)(削除) 104729 (削除ここまで)(削除) 
 (削除ここまで)(削除) else (削除ここまで)(削除) 
 (削除ここまで)(削除) s (削除ここまで)(削除)  (削除ここまで)(削除) = (削除ここまで)(削除)  (削除ここまで)(削除) mod (削除ここまで)(削除) ( (削除ここまで)(削除) s (削除ここまで)(削除) , (削除ここまで)(削除)  (削除ここまで)(削除) 4294967296_int64 (削除ここまで)(削除) ) (削除ここまで)(削除) 
 (削除ここまで)end (削除) if (削除ここまで)(追記) program (追記ここまで)(削除) 
 (削除ここまで)(追記) test_random_seed (追記ここまで)(削除) s (削除ここまで)(削除)  (削除ここまで)(削除) = (削除ここまで)(削除)  (削除ここまで)(削除) mod (削除ここまで)(削除) ( (削除ここまで)(削除) s (削除ここまで)(削除)  (削除ここまで)(削除) * (削除ここまで)(削除)  (削除ここまで)(削除) 279470273_int64 (削除ここまで)(削除) , (削除ここまで)(削除)  (削除ここまで)(削除) 4294967291_int64 (削除ここまで)(削除) ) (削除ここまで)(削除) 
 (削除ここまで)(削除) lcg (削除ここまで)(削除)  (削除ここまで)(削除) = (削除ここまで)(削除)  (削除ここまで)(削除) int (削除ここまで)(削除) ( (削除ここまで)(削除) mod (削除ここまで)(削除) ( (削除ここまで)(削除) s (削除ここまで)(削除) , (削除ここまで)(削除)  (削除ここまで)(削除) int (削除ここまで)(削除) ( (削除ここまで)(削除) huge (削除ここまで)(削除) ( (削除ここまで)(削除) 0 (削除ここまで)(削除) ), (削除ここまで)(削除)  (削除ここまで)(削除) int64 (削除ここまで)(削除) )), (削除ここまで)(削除)  (削除ここまで)(削除) kind (削除ここまで)(削除) ( (削除ここまで)(削除) 0 (削除ここまで)(削除) )) (削除ここまで)(削除) 
 (削除ここまで)(削除) end (削除ここまで)(削除)  (削除ここまで)(削除) function  (削除ここまで)(削除) lcg (削除ここまで)(削除) 
 (削除ここまで)(削除) end (削除ここまで)(削除)  (削除ここまで)(削除) subroutine  (削除ここまで)(削除) init_random_seed (削除ここまで)

See also

random_number

category: intrinsics

Revision from September 2, 2016 11:13:38 by Jason Blevins
Forward in time (3 more) | Back in time (3 more) | See current | Hide changes | History | Rollback | View: Source | Linked from: Intrinsic procedures, random_number, random_init

AltStyle によって変換されたページ (->オリジナル) /