Announcement

Collapse
No announcement yet.

Thuật toán bất kì

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Thuật toán bất kì

    ai chỉ giùm mình viết chương trình in ra số bất kì trong dãy Fibonaxi có giá trị trong khoảng 1 đến 20... bất kì nghĩa là nó cho ra kết quả khác nhau trong mỗi lần chạy.. từ đó mở rộng cho khoảng tùy ỳ mình nhập vào
    thank:dribble::dribble:

  • #2
    Vậy thì random index xem. Tính trước các số fibo lưu vào 1 mảng a chup anh sen ho tay., mỗi lần chạy random ra 1 số index, xuất ra a[index].
    Last edited by 08520001; 18-04-2015, 23:42.

    Comment


    • #3
      Code:
      #include "stdafx.h"
      #include <stdio.h>
      #include <conio.h>
      #include <stdlib.h>
      #include <time.h>
      
      #define max 100
      
      int f(int k);
      void nhap(int a[],int &n);
      int randf(int a[],int n);
      
      
      void main()
      {
      	srand((unsigned)time(NULL));
      	int a[max],n=0;
      	nhap(a,n);
      	printf("So fibonaxi ngau nhien trong khoang 1-->20: %d",randf(a,n));
      	getch();
      }
      
      int f(int k)
      {
      	if((k==0)||(k==1))
      		return 1;
      	else
      		return f(k-1)+f(k-2);
      }
      void nhap(int a[],int &n)
      {
      	int i;
      	for(i=0;;i++)
      		if(f(i)<20)
      		{
      			a[n]=f(i);
      			n++;
      		}
      		else
      			break;
      }
      int randf(int a[],int n)
      {
      	int u;
      	u=rand()%(n);
      	return a[u];
      }

      Trong khoảng tự định thì bạn sửa lại một chút ở nhap().
      Last edited by 12520260; 23-01-2013, 13:07.
      ஐName: Lê Duy Minh
      ஐMail: minh.le.duy@gm.uit.edu.vn

      Comment


      • #4
        Góp ý tý. Nếu chỉ cần lấy 1 số bất kì thì nên random vị trí Fibo của số đó trước rồi hãy tính ra số Fibo. Như vậy sẽ không phải chạy 1 loạt đệ qui để kiếm 20 số Fibo và cũng không tốn bộ nhớ cho mảng chứa :-?
        Với lại rand() chưa seed time vào thì nó sẽ ra cùng 1 số :-?
        Last edited by 12520238; 20-01-2013, 12:20.
        Khi ta chào đời, ta khóc mọi người cười
        Sống sao để khi chết đi ta cười còn mọi người khóc.


        Cuộc đời chỉ đáng sống khi còn bạn bè, người thân và quan trọng nhất là ta còn có thể đem lại niềm vui cho người khác

        Comment


        • #5
          Originally posted by 12520238 View Post
          Góp ý tý. Nếu chỉ cần lấy 1 số bất kì thì nên random vị trí Fibo của số đó trước rồi hãy tính ra số Fibo. Như vậy sẽ không phải chạy 1 loạt đệ qui để kiếm 20 số Fibo và cũng không tốn bộ nhớ cho mảng chứa :-?
          Với lại rand() chưa seed time vào thì nó sẽ ra cùng 1 số :-?
          có lệnh
          srand((unsigned)time(NULL));
          rồi kìa
          “ Đơm hoa không kết trái thì có sao?

          Là cá thì nhất định phải bơi ư?

          Ai bảo cuộc đời là phải sống,
          Ai bảo đau khổ rồi cũng sẽ qua,
          Ai bảo bài hát là phải có dạo đầu,

          Phá vỡ ranh giới để tìm kiếm điều gì đó...”

          Comment


          • #6
            À, nãy ko thấy:] Nhưng mà nếu gọi hàm randf() nhiều lần thì nó vẫn sẽ cho ra 1 số :-? Bỏ srand vào trong randf() luôn :-?
            Khi ta chào đời, ta khóc mọi người cười
            Sống sao để khi chết đi ta cười còn mọi người khóc.


            Cuộc đời chỉ đáng sống khi còn bạn bè, người thân và quan trọng nhất là ta còn có thể đem lại niềm vui cho người khác

            Comment


            • #7
              Originally posted by 12520238 View Post
              Góp ý tý. Nếu chỉ cần lấy 1 số bất kì thì nên random vị trí Fibo của số đó trước rồi hãy tính ra số Fibo. Như vậy sẽ không phải chạy 1 loạt đệ qui để kiếm 20 số Fibo và cũng không tốn bộ nhớ cho mảng chứa :-?
              Với lại rand() chưa seed time vào thì nó sẽ ra cùng 1 số :-?
              Vì đề cho là số fibo nằm trong khoảng nào đó nên đâu biết được có bao nhiêu số trong khoảng đó mà random ra vị trí số?
              VD: xuất ra số fibo có giá trị trong khoảng 20-->30 chẳng hạn thì biết số nào ở vị trí nào và có bao nhiêu số?
              ஐName: Lê Duy Minh
              ஐMail: minh.le.duy@gm.uit.edu.vn

              Comment


              • #8
                Originally posted by 12520260 View Post
                Vì đề cho là số fibo nằm trong khoảng nào đó nên đâu biết được có bao nhiêu số trong khoảng đó mà random ra vị trí số?
                VD: xuất ra số fibo có giá trị trong khoảng 20-->30 chẳng hạn thì biết số nào ở vị trí nào và có bao nhiêu số?
                rand()%11 +20
                Khi ta chào đời, ta khóc mọi người cười
                Sống sao để khi chết đi ta cười còn mọi người khóc.


                Cuộc đời chỉ đáng sống khi còn bạn bè, người thân và quan trọng nhất là ta còn có thể đem lại niềm vui cho người khác

                Comment


                • #9
                  Originally posted by 12520238 View Post
                  À, nãy ko thấy:] Nhưng mà nếu gọi hàm randf() nhiều lần thì nó vẫn sẽ cho ra 1 số :-? Bỏ srand vào trong randf() luôn :-?
                  srand chỉ được gọi một lần duy nhất khi chương trình chạy thôi em.

                  Comment


                  • #10
                    Originally posted by truonganpn View Post
                    srand chỉ được gọi một lần duy nhất khi chương trình chạy thôi em.
                    Dạ, em cảm ơn thầy Do em hiểu hàm srand() là để seed cho hàm rand() để mỗi khi rand là dựa vào cái time đã seed. Nên em hiểu nhầm là mỗi lần rand() là phải seed một time khác vào thì nó mới ra 1 số khác.
                    Khi ta chào đời, ta khóc mọi người cười
                    Sống sao để khi chết đi ta cười còn mọi người khóc.


                    Cuộc đời chỉ đáng sống khi còn bạn bè, người thân và quan trọng nhất là ta còn có thể đem lại niềm vui cho người khác

                    Comment

                    LHQC

                    Collapse
                    Working...
                    X