I want a file that contain only 1 and 0 for my java networking program. Writing a big file containing only 1 and 0 is boring. So, if vim do this, it is better.
I don't know that it is whether possible or not, but I guess it is possible in vim.
Vi and Vim Stack Exchange is a question and answer site for people using the vi and Vim families of text editors. It only takes a minute to sign up.
Sign up to join this communityTo use a purely vimscript solution you can use some functions I described in another answer of mine:
" Randomization Variables
" with a little extra randomized start from localtime()
let g:rndm_m1 = 32007779 + (localtime()%100 - 50)
let g:rndm_m2 = 23717810 + (localtime()/86400)%100
let g:rndm_m3 = 52636370 + (localtime()/3600)%100
function! Rndm()
let m4= g:rndm_m1 + g:rndm_m2 + g:rndm_m3
if( g:rndm_m2 < 50000000 )
let m4= m4 + 1357
endif
if( m4 >= 100000000 )
let m4= m4 - 100000000
if( m4 >= 100000000 )
let m4= m4 - 100000000
endif
endif
let g:rndm_m1 = g:rndm_m2
let g:rndm_m2 = g:rndm_m3
let g:rndm_m3 = m4
return g:rndm_m3
endfun
Once you added these function to your .vimrc
you can also add the following
one. It is take the length of the desired string as argument and put the string
in your unamed register. This way you can simply paste it whereever you want:
function! Random01(length)
let s=''
while len(s) < a:length
let s .= Rndm()%2
endwhile
call setreg('"', s, 'v')
endfunction
Now you can do :call Random01(30)
to generate a string of 30 zeros and ones
and simply add it to your buffer with p. On my machine :call Random01(100000)
is almost instantaneous.
In this function I put the string in a register but you can of course use it as in the other answers too.
Vim does not have built-in support for randomness. However, if you have Python support, you can use this quick one-liner:
:.pydo n=5; import random; return ''.join([random.choice(['0', '1']) for x in range(n)])
It will replace the current line with n 1s and 0s.
n=5
to the number of characters you want..
to another line range if you want more than one line. Removing the dot will change all lines.:help :pydo
for details.
See @grodzik's answer if you don't have Python support but are on a Unix-like system.
One way to do this is to use system('echo $RANDOM')
:
function! MyGenerator(iter)
let s = ""
for k in range(a:iter)
let s .= string(system('echo $RANDOM')%2)
endfor
execute "normal! a".s
endfunc
command -nargs=1 Generate01 :call MyGenerator(<args>)
With this in your .vimrc
all you need to do is:
:Generate01 1000
(or whatever value you want instead of 1000)
It's quite time consuming for large values, though - but still much faster than typing by hand ;)
$RANDOM
as a way to get a random value.