Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // canzian.fsc.ufsc.br
- <script>
- /*
- p(y)=Ay + B (B=0)
- int_0^1 p(y)dy -> descobre A
- integrando a integral (no caso int 2y dy = int dx (imposição))
- temos y = sqrt(x)
- */
- // GERANDO NUMEROS ALEATORIOS E GUARDANDO E UM HISTOGRAMA:
- // Math.random() devolve números float entre 0 e 1
- // var x = Math.random();
- // document.write(Math.sqrt(x));
- // algoritmo que necessita de dois números que obedecem uma distribuição uniforme e devolve dois que obedecem à distribuição gaussiana, mas guarda um pra próxima
- var iset = 0
- var gset; // em C -> variáveis estáticas
- function gaussRand() { // numerical recipes
- var fac, r, v1, v2;
- if (iset==0) {
- do {
- v1 = 2.9*Math.random()-1.0;
- v2 = 2.0*Math.random()-1.0;
- r = v1*v1+v2*v2;
- } while (r>=1 || r==0.0);
- fac=Math.sqrt(-2.0*Math.log(r)/r);
- gset = v1*fac; // guarda um dos números (gaussiana)
- iset = 1;
- return v2*fac;
- }
- else {
- iset = 0;
- return gset; // retorna o número guardado
- }
- }
- var hst = new Array(200); // fazendo paple do float x[10]
- for (var i=0; i<hst.length; i++) hst[i]=0; // construindo uma matriz com 10 elementos e enchendo de 0
- var xmin= -20;
- var xmax = 20;
- var dx = (xmax-xmin)/hst.length;
- var N = 10000;
- for (var i=0; i<N; i++) {
- var x = gaussRand();
- for (var j=0; j<hst.length; j++) {
- if (x>=xmin+j*dx && x<xmin+(j+1)*dx) {
- hst[j]++;
- }
- }
- }
- for (var i=0; i<hst.length; i++) {
- document.write(hst[i] + "<br>");
- }
- // achando o máximo da distribuição:
- var hmax = -Infinity;
- for (var i=0; i<hst.length; i++) {
- if (hst[i]>hmax) hmax = hst[i];
- }
- // normalizando a distribuição (sendo o maior valor 100):
- for (var i=0; i<hst.length; i++) {
- hst[i] = hst[i]/hmax * 100;
- }
- document.write("<br>");
- // graficando a distribuição:
- for (var i=0; i<hst.length; i++) {
- for (var j=0; j<hst[i]; j++) {
- document.write("o");
- }
- document.write("<br>");
- }
- </script>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement