মনোটোনিকভাবে কোনও হ্রাস না হওয়া শব্দ ফাংশন (গুলি) এর কি (পরিবার) রয়েছে?


10

আমি সময়ের সাথে সাথে বিন্দু A থেকে বি বিন্দুতে সরানো কোনও বস্তু সঞ্চারিত করতে একটি ফাংশন চাই, যেমন এটি কোনও নির্দিষ্ট সময়ে বি পৌঁছায় তবে যে কোনও সময়ে এর অবস্থান এলোমেলোভাবে একটানা ফ্যাশনে বিভ্রান্ত হয় তবে কখনও পিছনে যায় না। বস্তুগুলি সরলরেখাগুলির সাথে সরানো হয়, সুতরাং আমার কেবলমাত্র একটি মাত্রা প্রয়োজন।

গাণিতিকভাবে, এর অর্থ আমি কিছু অবিচ্ছিন্ন f (x), x ∈ [0,1] খুঁজছি, যেমন:

  • f (0) = 0
  • f (1) = 1
  • x <y → f (x) ≤ f (y)
  • "সর্বাধিক" পয়েন্টে f (x + d) - f (x) এর সাথে ডি এর কোনও সুস্পষ্ট সম্পর্ক থাকে না। (ফাংশনটি সমানভাবে বৃদ্ধি বা অন্যথায় অনুমানযোগ্য নয়; আমি মনে করি এটিও কোনও ডিগ্রি ডেরিভেটিভ না বলার সমতুল্য))

আদর্শভাবে, আমি আসলে কিছু উপায় চাই যাতে এই ফাংশনগুলির একটি পরিবার থাকে, কিছু বীজ রাষ্ট্র সরবরাহ করে। আমার বর্তমান ব্যবহারের জন্য আমার কমপক্ষে 4 বিট বীজ (16 টি সম্ভাব্য ফাংশন) প্রয়োজন, তবে যেহেতু এটি আরও বেশি পরিমাণে সরবরাহ করতে নির্দ্বিধায় মনে হয় না।

আহরণ ত্রুটিযুক্ত বিভিন্ন সমস্যা এড়ানোর জন্য, আমি ফাংশন পছন্দ না অভ্যন্তরীণ স্থিতি যে কোন ধরণের প্রয়োজন। এটি হ'ল আমি চাই এটি একটি আসল ফাংশন হোক, কোনও প্রোগ্রামিং "ফাংশন" নয়।


3
আপনার তৃতীয় এবং চতুর্থ প্রয়োজনীয়তা হিসাবে প্রায় অনুমান করা যেতে পারে f'(x)>0, তাই কোনও শব্দ কর্মের নিরঙ্কুশ মানটির স্বাভাবিকীকরণ সংহতকরণ আপনার সমস্ত প্রয়োজনীয়তা পূরণ করবে। দুর্ভাগ্যক্রমে আমি এটি গণনা করার কোনও সহজ উপায় জানি না, তবে সম্ভবত অন্য কেউ করেছে। :)
SkimFlux

আপনার ফাংশন তাত্ক্ষণিক opeাল কাজ লম্ব করা হবে?
কাওড

আপনি যখন "সংশ্লেষের ত্রুটিযুক্ত বিভিন্ন সমস্যা এড়াতে" বলবেন তখন আমি ভেবেছিলাম আপনি নির্ভুলতার জন্য উদ্বিগ্ন। দেখে মনে হচ্ছে আপনার অনেক মন্তব্যের ভিত্তিতে আপনি অত্যধিক মূল্যায়নের কর্মক্ষমতা ব্যয় নিয়ে উদ্বিগ্ন। আমাদের ঠিক কী পারফরম্যান্স এবং মেমরির সীমাবদ্ধতার অধীনে তা বলা উচিত - প্রয়োজনীয়তা যেভাবেই হয় ততটা অবহেলিত নয় কারণ যেহেতু জমে থাকা ত্রুটি নেই এমন রাষ্ট্রের সাথে কেউ আপাতদৃষ্টিতে ফাংশনগুলি তৈরি করতে পারে (এর অর্থ কী, যাইহোক?)। এছাড়াও, আপনার চতুর্থ বিষয়টি ভুল। একটি তুচ্ছ উদাহরণ: e ^ x এর কোনও ডেরাইভেটিভ ধ্রুবক নয়, সুতরাং এটি বলার সমতুল্য নয়।
সুপারবিস্ট

উত্তর:


4

এই পোস্টের জন্য, y = f (t) যেখানে টি হল প্যারামিটার যেখানে আপনি পরিবর্তিত হন (সময় / অগ্রগতি) এবং y লক্ষ্যমাত্রার দূরত্ব। সুতরাং আমি 2D প্লটের পয়েন্টগুলির সাথে কথা বলব যেখানে অনুভূমিক অক্ষ সময় / অগ্রগতি এবং উল্লম্ব দূরত্ব।

আমি মনে করি আপনি প্রথম পয়েন্ট (0, 1) এবং চতুর্থ (শেষ) পয়েন্ট (1, 0) এর সাথে একটি ঘনক বেজিয়ার বক্র তৈরি করতে পারেন। দুটি মাঝারি পয়েন্টগুলি এই 1-বাই -1 আয়তক্ষেত্রের মধ্যে এলোমেলোভাবে (x = র্যান্ড, y = র্যান্ড) স্থাপন করা যেতে পারে। আমি এটি বিশ্লেষণযোগ্যভাবে যাচাই করতে পারছি না, তবে কেবল একটি অ্যাপলেট দিয়ে ঘুরে বেড়ানোর মাধ্যমে (হ্যাঁ, এগিয়ে যান এবং হাসবেন) মনে হয় বেজিয়ার বক্ররেখা কখনই এ জাতীয় বাধা দিয়ে কমবে না।

এটি আপনার প্রাথমিক ফাংশন বি (পি 1, পি 2) হবে যা পয়েন্ট পি 1 থেকে পয়েন্ট পি 2 এ অ-হ্রাস পাথ সরবরাহ করে।

এখন আপনি আব (পি (1) = (0, 1), পি (এন) = (1, 0)) উত্পন্ন করতে পারবেন এবং এই বক্ররেখার সাথে অনেকগুলি পি (আই) বেছে নিতে পারেন যে 1

মূলত, আপনি একটি "সাধারণ" পাথ তৈরি করছেন এবং তারপরে এটি ভাগে বিভক্ত হয়ে প্রতিটি বিভাগকে নতুন করে তৈরি করছেন।

যেহেতু আপনি একটি গাণিতিক ফাংশন চান: ধরুন উপরের পদ্ধতিটি একটি ফাংশন y = f (t, s) এ প্যাকেজ করা আছে যা আপনাকে বীজের s এর ক্রিয়াকলাপের জন্য দূরত্ব দেয়। আপনার প্রয়োজন হবে:

  • প্রধান বেজিয়ার স্প্লাইনের 2 টি মাঝারি পয়েন্ট স্থাপনের জন্য 4 টি এলোমেলো সংখ্যা ((0, 1) থেকে (1, 0))
  • প্রতিটি বিভাগের সীমানার জন্য এন -1 নম্বরগুলি যদি আপনার n অংশ থাকে (প্রথম বিভাগটি সর্বদা শুরু হয় (0, 1) অর্থাৎ t = 0 এবং শেষ প্রান্তটি (1,0) অর্থাৎ t = 1)
  • বিভাগগুলির সংখ্যাটি এলোমেলো করতে চাইলে 1 নম্বর number
  • বিভাগটির স্প্লাইনের মাঝের পয়েন্টগুলি রাখার জন্য আরও 4 টি সংখ্যা আপনার টিতে অবতরণ করছে

সুতরাং প্রতিটি বীজ নীচের একটি সরবরাহ করতে হবে:

  • 0 এবং 1 এর মধ্যে 7 + n আসল সংখ্যা (আপনি যদি বিভাগগুলির সংখ্যা নিয়ন্ত্রণ করতে চান)
  • 7 টি আসল সংখ্যা এবং 1 এর চেয়ে বড় একটি পূর্ণসংখ্যা (এলোমেলো সংখ্যার বিভাগগুলির জন্য)

আমি ধারণা করি আপনি কেবল বীজের হিসাবে সংখ্যার একটি অ্যারের সরবরাহ করে এর মধ্যে দুটিও অর্জন করতে পারেন। বিকল্পভাবে, আপনি বীজ হিসাবে এক নম্বর গুলি সরবরাহ করার মতো কিছু করতে পারেন এবং তারপরে বিল্ট-ইন র্যান্ডম নম্বর জেনারেটরটিকে র্যান্ড (গুলি), র্যান্ড (এস +1), র্যান্ড (এস + 2) এবং আরও কিছু দিয়ে কল করতে পারেন (বা এর সাথে আরম্ভ করুন) গুলি এবং তারপরে র্যান্ডেল কল করুন e নেক্সট নাম্বার)।

মনে রাখবেন যে পুরো ফাংশন এফ (টি, গুলি) অনেকগুলি অংশ নিয়ে গঠিত হলেও আপনি প্রতিটি টিয়ের জন্য একটি বিভাগকেই মূল্যায়ন করছেন। আপনি হবে , কারণ আপনি সেগুলির সাজাতে নিশ্চিত দুই অংশ ওভারল্যাপ করতে থাকবে, বারবার এই পদ্ধতিতে অংশ সীমানা নিরূপণ করা প্রয়োজন। আপনি সম্ভবত এই অতিরিক্ত কাজটি অপ্টিমাইজ করতে পারেন এবং মুক্তি পেতে পারেন এবং প্রতিটি কলের জন্য কেবলমাত্র একটি বিভাগের শেষ পয়েন্টগুলি খুঁজে পেতে পারেন তবে এখনই এটি আমার কাছে স্পষ্ট নয়।

এছাড়াও, বেজিয়ার কার্ভগুলি প্রয়োজনীয় নয়, উপযুক্তভাবে আচরণ করা স্প্লাইনটি করবে।

আমি একটি নমুনা মতলব বাস্তবায়ন তৈরি করেছি।

বেজিয়ার ফাংশন (ভেক্টরাইজড):

function p = bezier(t, points)
% p = bezier(t, points) takes 4 2-dimensional points defined by 2-by-4 matrix
% points and gives the value of the Bezier curve between these points at t.
% 
% t can be a number or 1-by-n vector. p will be an n-by-2 matrix.
    coeffs = [
        (1-t').^3, ...
        3*(1-t').^2.*t', ...
        3*(1-t').*t'.^2, ...
        t'.^3
    ];

    p = coeffs * points;
end

উপরে বর্ণিত যৌগিক বেজিয়ার ফাংশন (প্রতিটি কলের জন্য কতটা মূল্যায়ন প্রয়োজন তা পরিষ্কার করার জন্য ইচ্ছাকৃতভাবে আবদ্ধ রেখে দেওয়া হয়েছে):

function p = bezier_compound(t, ends, s)
% p = bezier(t, points) takes 2 2-dimensional endpoints defined by a 2-by-2
% matrix ends and gives the value of a "compound" Bezier curve between
% these points at t.
% 
% t can be a number or 1-by-n vector. s must be a 1-by-7+m vector of random
% numbers from 0 to 1. p will be an n-by-2 matrix. 
    %% Generate a list of segment boundaries
    seg_bounds = [0, sort(s(9:end)), 1];

    %% Find which segment t falls on
    seg = find(seg_bounds(1:end-1)<=t, 1, 'last');

    %% Find the points that segment boundaries evaluate to
    points(1, :) = ends(1, :);
    points(2, :) = [s(1), s(2)];
    points(3, :) = [s(3), s(4)];
    points(4, :) = ends(2, :);

    p1 = bezier(seg_bounds(seg), points);
    p4 = bezier(seg_bounds(seg+1), points);

    %% Random middle points
    p2 = [s(5), s(6)] .* (p4-p1) + p1;
    p3 = [s(7), s(8)] .* (p4-p1) + p1;

    %% Gather together these points
    p_seg = [p1; p2; p3; p4];

    %% Find what part of this segment t falls on
    t_seg = (t-seg_bounds(seg))/(seg_bounds(seg+1)-seg_bounds(seg));

    %% Evaluate
    p = bezier(t_seg, p_seg);    
end

যে স্ক্রিপ্টটি এলোমেলো বীজের জন্য ফাংশনটি প্লট করে (দ্রষ্টব্য যে এটিই একমাত্র জায়গা যেখানে র্যান্ডম ফাংশন বলা হয়, অন্যান্য সমস্ত কোডের এলোমেলো ভেরিয়েবলগুলি এই একটি এলোমেলো অ্যারে থেকে প্রচারিত হয়):

clear
clc

% How many samples of the function to plot (higher = higher resolution)
points = 1000;

ends = [
    0, 0;
    1, 1;
    ];

% a row vector of 12 random points
r = rand(1, 12);

p = zeros(points, 2);

for i=0:points-1
    t = i/points;
    p(i+1, :) = bezier_compound(t, ends, r);
end

% We take a 1-p to invert along y-axis here because it was easier to
% implement a function for slowly moving away from a point towards another.
scatter(p(:, 1), 1-p(:, 2), '.');
xlabel('Time');
ylabel('Distance to target');

এখানে একটি নমুনা আউটপুট:

এখানে চিত্র বর্ণনা লিখুন

এটি আপনার বেশিরভাগ মানদণ্ডকে মেটায় বলে মনে হচ্ছে। যাহোক:

  • "কোণে" আছে। এটি আরও উপযুক্তভাবে বেজিয়ার কার্ভগুলি ব্যবহার করে উপযুক্ত হতে পারে।
  • এটি "স্পষ্টতই" স্প্লাইচের মতো দেখায়, যদিও আপনি বীজকে না জেনে অবাস্তব সময়ের পরে এটি কী করবে তা আপনি সত্যিই অনুমান করতে পারবেন না।
  • এটি খুব কমই কোণার দিকে খুব বেশি বিচ্যুত হয় (বীজ জেনারেটর বিতরণের সাথে খেলে এটি স্থির করা যেতে পারে)।
  • কিউবিক বেজিয়ার ফাংশনটি এই সীমাবদ্ধতার দিক দিয়ে কোণার কাছাকাছি কোনও অঞ্চলে পৌঁছতে পারে না।

1

আমি অনুমান করি যে পরিবর্তিত কোসিনগুলির একগুচ্ছ সংমিশ্রণের পরিবর্তে (পার্লিন শব্দে ডট পণ্যগুলি আপনাকে দেয়) এর পরিবর্তে, আপনি f (0) = 0 থেকে শুরু হওয়া কয়েকটি মনোটোনিক ফাংশন মিশ্রিত করতে পারেন, যেমন f (x) = x, বা 2x, বা x ^ 2, ইত্যাদি আসলে আপনার ডোমেনটি 0 => 1 এর মধ্যে সীমাবদ্ধ থাকায় আপনি ট্রাইগ ফাংশনগুলিতেও মিশ্রণ করতে পারেন যা ডোমেনের মধ্যে বিলের সাথে ফিট করে কোস (90 * x + 270)। আপনার পদ্ধতিগুলিকে 1 এ শেষ করতে সাধারণ করতে, আপনি কেবল এফ (0) = 0 থেকে এফ (1) দ্বারা শুরু হওয়া এই মনোোটনিক পদ্ধতিগুলির ভারিত যোগফলকে ভাগ করতে পারেন। এর মতো কিছুতে পাশাপাশি বিবর্তন করা মোটামুটি সহজ হওয়া উচিত (যা আমি সংগ্রহ করি যা প্রোগ্রামিং ফাংশন বনাম স্টেটলেস রিয়েল ফাংশনগুলি সম্পর্কে কিছুটা থেকে আপনি চান)।

আশাকরি এটা সাহায্য করবে.


1

এই অপরিশোধিত চিত্রটিকে কেউ বিশ্লেষণ করতে পারেন এখানে চিত্র বর্ণনা লিখুন আপনি অভিন্ন র‌্যান্ড ফাংশনটি ব্যবহার করে ফ্লাইয়ে আপনার অ্যানিমেশন সম্পাদন করে এমন একটি ফাংশন শেষ করতে পারেন। আমি জানি এটি সঠিক গাণিতিক সূত্র নয়, তবে এলোমেলো ফাংশনটির জন্য আসলে কোনও গাণিতিক সূত্র নেই এবং এমনকি যদি এটিও থাকে তবে আপনি এটি অর্জনের জন্য প্রচুর কোডিং করবেন। আপনি কোনও মসৃণতা শর্ত নির্দিষ্ট করে নিচ্ছেন না তা বিবেচনা করে, গতি প্রোফাইলটি $ C ^ 0 $ অবিরত (তবে যেহেতু আপনি রোবটগুলির সাথে কাজ করছেন না, বিচ্ছিন্ন ত্বরণ প্রোফাইল সম্পর্কে চিন্তা করার দরকার নেই)।


"এলোমেলো ফাংশনের জন্য আসলে কোনও গাণিতিক সূত্র নেই" আমি একটি গোলমাল ফাংশন চাই, এলোমেলো ফাংশন নয়। নয়েজ ফাংশনগুলি অস্তিত্বের জন্য ভালভাবে ডকুমেন্টেড থাকে। এর মতো মূল সংজ্ঞাগুলিও অদক্ষতা তৈরি করে (মূল্যায়ন করে ও (টুকরা হয়ে যায়) যা আপনার দীর্ঘ সময় স্কেল করলে সমস্যা হয়ে দাঁড়ায়), অপবিত্র ফাংশন (ও (1) এ মূল্যায়ন করে তবে পূর্ববর্তী অবস্থানটি রাখা দরকার), বা অতিরিক্ত- সম্ভাব্য ক্রিয়াকলাপগুলিকে সীমাবদ্ধ করুন (যেমন সমস্ত প্রতিচ্ছবি পয়েন্টগুলি নির্দিষ্ট বিরতিতে থাকে)।

হুঁ, দুঃখিত, আমি ভেবেছিলাম যে শব্দটি ফাংশনগুলি এলোমেলো সংখ্যার জেনারেটর পদ্ধতিও ব্যবহার করে এবং এটি কোনও আকার নির্ধারণের জন্য গাইড / কী পয়েন্টগুলির একটি পৃথক সেটের উপরও নির্ভর করে (আমি দেখেছি পার্লিন নয়েজ উল্লেখ করা হয়েছিল .. যে সিউডো-এলোমেলো মাধ্যমে কাজ করে) সংখ্যার জেনারেটর যা সংহত করা বেশ কঠিন, সুতরাং কোনও বিশ্লেষণমূলক সমাধান নেই)। কেউ কি বিশ্লেষণাত্মকভাবে একটি শোর ফাংশন সংহত করতে পারেন? আমি ভাবছি যে এর মধ্যে
কোনওটি যদি

উদাহরণস্বরূপ, পার্লিন শব্দটি 255 8 বিট সংখ্যার বীজের অবস্থা গ্রহণ করে, তবে সে থেকে এটি তিন মাত্রায় অসীম দূরত্বে এলোমেলো শব্দ উত্পন্ন করে; এগুলিকে "গাইড পয়েন্ট" হিসাবে বর্ণনা করা সত্যিই সঠিক নয়, গাণিতিকভাবে তারা আরও 256 পরামিতিগুলির মতো যা আপনি সরবরাহ করতে চান না। আপনি যেমনটি বলেছেন এটি মূলত সংহত নয়, তবে এটি একটি বিশুদ্ধ কাজ pure আপনি যে পৃষ্ঠাটির সাথে লিঙ্ক করেছেন সেটি হ'ল পার্লিন শব্দের খারাপ ব্যাখ্যা (এটি আসলে তিনি পার্লিনের গোলমাল ব্যাখ্যা করেন না)। কিনা তার জন্য সম্ভব হিসাবে কিছু গোলমাল ফাংশন ... ভাল ধরনের, যে প্রশ্ন, তাই নয় কি?

1

[0,1] থেকে এন এলোমেলো সংখ্যার ক্রমবর্ধমান ক্রম উত্পন্ন করার স্বাভাবিক উপায়টি হ'ল যে কোনও পরিসরে এন এলোমেলো সংখ্যা তৈরি করা, তারপরে তাদের মোট যোগফল দ্বারা সমস্তগুলি ভাগ করে নেওয়া, তারপরে পাওয়ার জন্য তাদের একসাথে যোগ করতে হবে ক্রম.

ক্রম 2, 2, 5, 8, 6 তৈরি করুন rate
তাদের যোগফল 23, সুতরাং আমাদের যোগফলগুলি 2/23, 2/23, 5/23, 8/23 এবং 6/23 হয়।
আমাদের চূড়ান্ত ক্রম 2/23, 4/23, 9/23, 17/23, 23/23

এক্স এবং ওয়াই উভয়ের জন্য এই মানগুলি তৈরি করে এটি 2 ডি পর্যন্ত বাড়ানো যেতে পারে you


@ টিওড্রনের অনুরূপ উত্তরে আপনি বৃহত্তর সময়-স্কেলগুলির সাথে দক্ষতার উদ্বেগগুলি উদ্ধৃত করেছেন। আপনি যে প্রকৃত সমস্যার মুখোমুখি হচ্ছেন তা জেনেও, যদি উদ্বেগটি বৈধ হয় তবে আমি বলতে পারি না; তবে আরেকটি বিকল্প হ'ল ছোট এন এর জন্য উত্পন্ন করা , এবং কেবল ফলাফলটি মসৃণ করা। আবেদনের উপর নির্ভর করে এটি সম্ভবত আরও ভাল ফলাফল দিতে পারে give

এখানে চিত্র বর্ণনা লিখুন
এন = 100, কোনও স্মুথ নেই

এখানে চিত্র বর্ণনা লিখুন
এন = 15, স্মুথিং সহ


আপনি মসৃণকরণের জন্য যা কিছু করছেন না কেন, ফলাফলটি একটি কার্যকারিতা নয় (প্রায় x = 0.95) তৈরি হয়েছে বলে মনে হয়; আমি নিশ্চিত নই যে এটি আপনার গ্রাফিং প্রোগ্রামের কোনও শিল্পকর্ম বা কোনও ভুল। একঘেয়েমিটিও প্রায় 0.7 এর লঙ্ঘন বলে মনে হয়। যাইহোক, আমি "সাধারণ উপায়" এর সাথে পরিচিত - আমি এই প্রশ্নটি জিজ্ঞাসা করছি কারণ আমার সন্দেহ হয় যে স্বাভাবিক উপায়টি ভঙ্গুর। প্রাক-পার্লিন-শোর, সর্বোপরি, কারও কারও কাছে দানবীয় LUTs মান শব্দের সমস্যা ছিল না, এটি কেবল "স্বাভাবিক উপায়"। আজ, আমাদের কাছে একটি উপায় রয়েছে যা যথেষ্ট বেশি নমনীয় এবং দক্ষ।

3
আমি নীলরাজের সাথে একমত: একঘেয়েমিটি লঙ্ঘন না করে স্মুথ করার সুপরিচিত, সহজ-বাস্তবায়িত উপায় রয়েছে, উদাহরণ নির্বিশেষে। উদাহরণস্বরূপ, সরানো গড় বা অঙ্কনের স্প্লিনগুলি। তবে, জো জোরেসনিগ উদ্বেগটি অপ্রাসঙ্গিক নয়। গেমের নিয়ম এবং যান্ত্রিক জিনিসগুলি কখনই কাজ করতে পিছপা হয় না এমন বিষয়ের উপর নির্ভর করতে পারে - এটি ধারণা করা খুব কমই মনে করা উচিত যে প্রশ্নকারীর যে জিনিসগুলির প্রয়োজন তার যা প্রয়োজন তার প্রয়োজন হয় না।
সুপারবেস্ট

1
@ ব্লুরাজা: এই জাতীয় টুকরোয়াল পদ্ধতি সম্পর্কে আমার প্রাথমিক অভিযোগগুলি টিওড্রোন সম্পর্কিত আমার প্রতিক্রিয়াতে বর্ণিত। এটি "সর্বাধিক অনমনীয় এবং গাণিতিক-সুনির্দিষ্ট ফলাফল" সন্ধানের বিষয়ে নয় - এটি আমাদের আগে অজানা একটি গাণিতিক সরঞ্জাম দিয়ে নতুন সম্ভাবনার উদ্বোধনের কথা। আবার, দৈত্য মান শব্দ LUTs এবং পার্লিন গোলমালের মধ্যে সাদৃশ্য বিবেচনা করুন। সাইটের প্রতিটি প্রশ্নের একটি অফ-দ্য-কফের "যথেষ্ট যথেষ্ট" উত্তর দরকার নেই যে কোনও অর্ধেক বুদ্ধিমান সিএস আন্ডারগ্রাড বক্তৃতার মধ্যে ছড়িয়ে দিতে পারে - কখনও কখনও আসল এবং পেশাদার কিছু করার জন্য গুলি করি, ঠিক আছে?

1
অথবা আমরা কেবল এই সাইটটিকে রূপান্তর ম্যাট্রিক্স সম্পর্কে 90% প্রাথমিক বিভ্রান্তিতে ডুবতে দিতে পারি, 10% "আমাকে গেম খেলা বন্ধ করতে সহায়তা করুন!" এটি একটি দুর্দান্ত প্রশ্নোত্তর সাইট তৈরি করবে যা প্রতিটি পেশাদার আসতে পছন্দ করবে।

2
@ জো: এটি, এরম, এর জন্য অনুপযুক্ত। আপনি আপনার মানদণ্ডের ফিট করার জন্য একটি সমাধান চেয়েছিলেন, আমি আপনাকে একটি দিয়েছি। এটি সহজ কারণ এটি খারাপ করে না।
ব্লুরাজা - ড্যানি পিফ্লুঘুফুট

1

আমি ফ্র্যাক্টাল গোলমাল পাওয়া অষ্টাভের সংশ্লেষণ দ্বারা অনুপ্রাণিত এই বাস্তবায়নটির পরামর্শ দিচ্ছি, এখানে এবং সেখানে বেশ কয়েকটি সস্তা গাধা বদলে। আমি বিশ্বাস করি যে এটি যথাযথভাবে দ্রুত এবং এটি সম্পর্কে নির্ভুলতার ক্ষতি সহ প্যারামিটারগুলিতে সঞ্চিত চেয়ে কম অষ্টভের জন্য জিজ্ঞাসা করে সুর করা যেতে পারে 1/2^octave

আপনি এটিকে টুকরোড়া বাস্তবায়ন হিসাবে দেখতে পেতেন যার জন্য কেবল ও (লগ (টুকরা)) সময় প্রয়োজন। প্যারামিটার অ্যারে উভয় বিভাজন এবং বিজয়ী পিভট অবস্থানের জন্য এবং পিভট পৌঁছানোর সময় যে দূরত্ব ভ্রমণ করেছিল তার জন্য ব্যবহৃত হয়।

template<int N> struct Trajectory
{
    Trajectory(int seed = 0)
    {
        /* The behaviour can be tuned by changing 0.2 and 0.6 below. */
        if (seed)
            srand(seed);
        for (int i = 0; i < N; i++)
            m_params[i] = 0.2 + 0.6 * (double)(rand() % 4096) / 4096;
    }

    double Get(double t, int depth = N)
    {
        double min = 0.0, max = 1.0;
        for (int i = 0, dir = 0; i < N && i < depth; i++)
        {
            int j = (dir + 1 + i) % N;
            double mid = min + (max - min) * m_params[j];
            if (t < m_params[i])
            {
                dir += 1;
                t = t / m_params[i];
                max = mid;
            }
            else
            {
                dir ^= i;
                t = (t - m_params[i]) / (1.0 - m_params[i]);
                min = mid;
            }
        }
        t = (3.0 - 2.0 * t) * t * t; // Optional smoothing
        return min + (max - min) * t;
    }

    double m_params[N];
};

এটি প্রায় তিন গুণ বেশি তথ্য সঞ্চয় করে, ভাসমান পয়েন্ট বিভাগগুলি প্রাক-গণনা করে আরও দ্রুত তৈরি করা যেতে পারে।

এটি একটি দ্রুত উদাহরণ:

পাঁচটি পৃথক ট্র্যাজেক্টরি

উদাহরণটি নিম্নলিখিত কোড সহ প্রাপ্ত হয়েছিল:

for (int run = 0; run < 5; run++)
{
    /* Create a new shuffled trajectory */
    Trajectory<12> traj;

    /* Print dots */
    for (double t = 0; t <= 1.0; t += 0.0001)
        printf("%g %g\n", t, traj.Get(t));
}

0

উচ্চস্বরে চিন্তা করা, এবং ক্যালকুলাস স্বীকার করা আমার দৃ point় বিষয় নয় ... এটি সম্ভবত সম্ভব নয় কি? কোনও সুস্পষ্ট নিদর্শন এড়াতে, x এর যে কোনও পরিবর্তনের উপর গোলমাল ফাংশনটির গড় অবশ্যই শূন্যের কাছাকাছি হতে হবে, এবং একঘেয়েত্বের গ্যারান্টি দিতে x এর পরিবর্তনের উপর শব্দের প্রশস্ততা x এর পরিবর্তনের চেয়ে ছোট হওয়া উচিত, যেহেতু কোনও বৃহত্তর প্রশস্ততা থাকতে পারে x এর তুলনায় x 'এর চেয়ে কম মানের ফলস্বরূপ। তবে এর অর্থ হ'ল আপনি ডেক্সকে 0 এর দিকে হ্রাস করার সাথে সাথে এই জাতীয় ফাংশনটি অবশ্যই ডিএকে হ্রাস করতে হবে (যেখানে A প্রশস্ততা রয়েছে) শূন্যের দিকে, যার অর্থ আপনি কোনও অনুগত শোনার ক্রিয়া থেকে কোনও অবদান পাবেন না।

আমি অনুমান করতে পারি যে কোনও ক্রমটি সূচনা করা সম্ভব যা ক্রমশ এক্স 1 এর কাছাকাছি আসার সাথে সাথে শব্দের অবদান হ্রাস পাবে, তবে এটি আপনাকে একটি বাঁকা ফাংশন দেবে যা এক্সের কাছে পৌঁছানোর সাথে সাথে 1 হ'ল যা আপনি চান বলে মনে করেন না।


1
আমি এই জাতীয় ক্রিয়াকলাপের লক্ষ লক্ষ গ্রাফ আঁকতে পারি এবং যেমন স্কিমফ্লাক্স বলেছেন যে কোনও শব্দ কর্মের সংহতকরণ যদি আপনি এটি স্বাভাবিক করেন তবে কার্যত সমতুল্য ফাংশন দেয়। সুতরাং ফাংশন বিদ্যমান , এগুলি কেবল সম্ভাব্য কোডড হতে পারে কিনা তা কেবল বিষয় । সুতরাং এখানে গণিতের পরিবর্তে জিজ্ঞাসা করুন se

উদাহরণস্বরূপ, এক্স g(x) = 1 - f(1 - x)

অবশ্যই, ফাংশনগুলি বিদ্যমান - আপনি টিওড্রনের মতো একটি আঁকতে পারেন - তবে সেগুলি কি 'আওয়াজ' রয়েছে? গোলমাল একটি বেসলাইন সম্পর্কিত একটি অন্তর্নিহিত প্রশস্ততা সঙ্গে ছদ্ম-র্যান্ডম ইনপুট উপর ভিত্তি করে একটি অবিচ্ছিন্ন ফাংশন বোঝায়। এবং যদি সেই প্রশস্ততা খুব বেশি হয় তবে আউটপুট একঘেয়ে রাখার জন্য আপনি ধাপের মধ্যে পার্থক্য যথেষ্ট কম তা গ্যারান্টি দিতে পারবেন না। তবে এটি আমার কাছে ঘটে যায় যে আপনার স্পেসিফিকেশনগুলি পূরণ করার জন্য গোলমালের ঘনত্ব এবং দ্বিখণ্ডিত পদক্ষেপটি তৈরি করা যেতে পারে, যা সম্পর্কে আমি আরও কিছুটা ভাবতে যাচ্ছি।
কাইলোটান

শোরগোলের অর্থ এটি কেবলমাত্র "অনির্দেশ্য", এটি প্রজন্মের পদ্ধতিগুলি (বা এমনকি, প্রযুক্তিগতভাবে, ধারাবাহিকতা) সম্পর্কে কিছুই বলে না, যদিও অ্যানিমেশনের জন্য আপনি প্রায় সর্বদা সুসংগত শব্দ চান "। এটি সত্য যে স্থির সমাপ্তিগুলি এই ফাংশনের সম্ভাব্য প্রশস্ততা কিছুটা সীমাবদ্ধ করে, তবে পুরোপুরি নয়। অন্যান্য গোলমাল ফাংশনগুলির অনুরূপ বৈশিষ্ট্য রয়েছে, যেমন কোনও পূর্ণসংখ্যার x এর জন্য পার্লিন (x) = 0। একঘেয়েমি এটির চেয়েও শক্তিশালী গ্যারান্টি, তবে আমি মনে করি না এটি এত শক্তিশালী এটি অসম্ভবকে পরিণত করে।

@ জোব্রেসনিগ আমি নিশ্চিত যে আপনি অবগত আছেন যে পার্লিন শোর ফাংশন আপনার বেশ কয়েকটি মানদণ্ডকে নির্মমভাবে লঙ্ঘন করেছে। গ্রিড নোডে প্রথমে এটি 0 দিয়ে যায় তাই f (x + d) -f (x) কিছু নির্দিষ্ট (নিয়মিত ব্যবধানে) x এর জন্য ধ্রুবক একাধিক। অতিরিক্তভাবে, সেই চতুর ক্যাশিং কৌতুকের কারণে এটি বড় গ্রিডের জন্য পুনরাবৃত্তি করবে। ক্লাসিক শব্দের জন্য, আমি মনে করি যে রেফারেন্স প্রয়োগকরণে গ্রিড টাইল (x, y) টাইলের সমান (x + 256, y + 256) থাকতে পারে। যদি এটি গ্রহণযোগ্য হয় এবং কতটা পরিমাণে থাকে তবে আপনার উচিত should
সুপারবেস্ট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.