டைனமிக் கேன்வாஸ் அனிமேஷன்களுடன் இணைய போக்குவரத்தை காட்சிப்படுத்துதல்
நவீன வலை மேம்பாட்டில், தரவுகளின் காட்சிப் பிரதிநிதித்துவம் அவசியம், குறிப்பாக இணைய போக்குவரத்து போன்ற சிக்கலான கருத்துகளை விளக்குவது. ஜாவாஸ்கிரிப்ட் மற்றும் HTML5 கேன்வாஸ் போன்ற ஆற்றல்மிக்க மற்றும் ஈர்க்கக்கூடிய காட்சிப்படுத்தல்களை உருவாக்க சக்திவாய்ந்த கருவிகளை வழங்குகிறது. மிகவும் பொதுவான காட்சி உருவகங்களில் ஒன்று, நெட்வொர்க் ட்ராஃபிக்கின் ஏற்ற இறக்கங்கள் மற்றும் ஓட்டங்கள் போன்ற தரவு ஏற்ற இறக்கங்களைக் குறிக்க அனிமேஷன் கோடுகளைப் பயன்படுத்துவதாகும்.
எவ்வாறாயினும், எளிய சைன் அலைகள் போன்ற நிலையான அல்லது யூகிக்கக்கூடிய அனிமேஷன்களைத் தாண்டி, சீரற்ற தன்மையை அறிமுகப்படுத்துவதே சவாலாகும். இந்த சீரற்ற தன்மை அனிமேஷனை நிஜ உலகத் தரவைப் போலவே தோற்றமளிக்க உதவும், இது பெரும்பாலும் கணிக்க முடியாதது. கேன்வாஸ் கோடுகளுக்கான சீரற்ற அலைவீச்சுகள் இணைய போக்குவரத்தை தொடர்ந்து மாற்றுவது மற்றும் மாறுவது போன்ற மாயையை வழங்க முடியும்.
பல டெவலப்பர்கள், இந்த வகையான ட்ராஃபிக் அனிமேஷனை உருவகப்படுத்த முயற்சிக்கும்போது, தற்செயலாக ஆர்கானிக் உணராத ஒரு தொடர்ச்சியான வடிவத்தை உருவாக்கலாம். சைன் மற்றும் கொசைன் போன்ற முக்கோணவியல் செயல்பாடுகளை அதிகமாக நம்பியிருக்கும் போது இது நிகழ்கிறது, அவை இயல்பாகவே கால இடைவெளியில் உள்ளன. மிகவும் சீரற்ற உணர்வை அடைய, காலப்போக்கில் அலைவீச்சு அல்லது பாதையை நாம் சரிசெய்ய வேண்டும், இது மிகவும் யதார்த்தமாகத் தோன்றும்.
இந்த வழிகாட்டியில், ஜாவாஸ்கிரிப்ட் கேன்வாஸைப் பயன்படுத்தி அனிமேஷன் செய்யப்பட்ட கோடுகளை எவ்வாறு உருவாக்குவது மற்றும் ஏற்ற இறக்கமான இணைய போக்குவரத்தைப் பிரதிபலிக்கும் வகையில் அவற்றின் அலைவீச்சில் சீரற்ற தன்மையை எவ்வாறு செயல்படுத்துவது என்பதை ஆராய்வோம். முடிவில், நிகழ்நேர தரவின் கணிக்க முடியாத தன்மையைப் படம்பிடிக்கும் மென்மையான, முடிவில்லாத அனிமேஷன்களை உங்களால் உருவாக்க முடியும்.
கட்டளை | பயன்பாட்டின் உதாரணம் |
---|---|
createCanvas() | இந்த கட்டளை Node.js இன் ஒரு பகுதியாகும் நூலகம். இது ஒரு புதிய கேன்வாஸ் நிகழ்வைத் துவக்குகிறது, டெவலப்பர்கள் சர்வர் பக்க சூழலில் படங்களை உருவாக்க மற்றும் கையாள அனுமதிக்கிறது. இந்த எடுத்துக்காட்டில், அனிமேஷனுக்காக 800x400 பிக்சல்கள் கொண்ட கேன்வாஸை உருவாக்க இது பயன்படுத்தப்பட்டது. |
getContext('2d') | இந்த கட்டளை முன்-இறுதி மற்றும் சர்வர்-பக்கத்தில் 2D வரைதல் சூழலை மீட்டெடுக்கிறது. இணைய போக்குவரத்தைக் குறிக்கும் சீரற்ற அலைவீச்சுக் கோடுகள் போன்ற கேன்வாஸில் பொருள்கள் மற்றும் கோடுகள் எவ்வாறு வரையப்படும் என்பதை வரையறுப்பதற்கு இது அவசியம். |
clearRect() | இந்த செயல்பாடு கேன்வாஸின் ஒரு பகுதியை அழிக்கிறது, முந்தைய வரைபடங்களை திறம்பட அழிக்கிறது. அனிமேஷன் லூப்பில், அடுத்த சட்டத்தை வரைவதற்கு முன் கேன்வாஸை மீட்டமைக்க clearRect() அழைக்கப்படுகிறது, கோடுகள் ஒன்றுடன் ஒன்று சேராமல் இருப்பதை உறுதி செய்கிறது. |
lineTo() | இந்த கட்டளை கேன்வாஸ் பாதை வரைதல் முறையின் ஒரு பகுதியாகும். MoveTo() கட்டளையால் குறிப்பிடப்பட்ட புள்ளிகளுக்கு இடையே கோடுகளை வரைய இது பயன்படுகிறது. இந்த வழக்கில், இணைய போக்குவரத்தை உருவகப்படுத்தும் ஏற்ற இறக்கமான கோடுகளை வரைவதற்கு இது முக்கியமானது. |
stroke() | ஸ்ட்ரோக்() கட்டளை கேன்வாஸில் lineTo() ஆல் உருவாக்கப்பட்ட பாதையை வழங்குகிறது. இந்தச் செயல்பாடு இல்லாமல், கோடுகள் வரையறுக்கப்படும் ஆனால் காணப்படாது. இது அனிமேஷன் செய்யப்பட்ட இணைய போக்குவரத்து வரிகளின் வரைபடத்தை இறுதி செய்கிறது. |
requestAnimationFrame() | அனிமேட்() செயல்பாட்டை மீண்டும் மீண்டும் அழைப்பதன் மூலம் மென்மையான அனிமேஷன்களை உருவாக்க JavaScript முறை பயன்படுத்தப்படுகிறது. இந்த கட்டளை உலாவிக்கு அடுத்த கிடைக்கக்கூடிய சட்டகத்தில் அனிமேஷனை இயக்கச் சொல்கிறது, இது தடையற்ற காட்சி மாற்றங்களை வழங்குகிறது. |
Math.random() | 0 மற்றும் 1 க்கு இடையில் ஒரு சீரற்ற எண்ணை உருவாக்குகிறது. இந்தக் கட்டளை இந்த சூழலில் முக்கியமானது, ஏனெனில் இது வரி அனிமேஷனுக்கான சீரற்ற வீச்சுகளை உருவாக்க உதவுகிறது, இது நிகழ்நேர இணைய போக்குவரத்து முறைகளை உருவகப்படுத்தும் கணிக்க முடியாத அளவைச் சேர்க்கிறது. |
toBuffer('image/png') | கேன்வாஸின் தற்போதைய நிலையை PNG படமாக ஏற்றுமதி செய்ய இந்த கட்டளை Node.js இல் கேன்வாஸ் நூலகத்துடன் பயன்படுத்தப்படுகிறது. சர்வர் பக்க அணுகுமுறையில், உருவாக்கப்பட்ட ஒவ்வொரு அனிமேஷன் சட்டகத்தையும் ஒரு படக் கோப்பாக சேமிக்க உதவுகிறது. |
setInterval() | இந்த செயல்பாடு குறிப்பிட்ட நேர இடைவெளியில் குறியீட்டை மீண்டும் மீண்டும் செயல்படுத்துகிறது. சர்வர் பக்க எடுத்துக்காட்டில், ஒவ்வொரு 100 மில்லி விநாடிகளிலும் கேன்வாஸ் அனிமேஷன் சட்டத்தை மேம்படுத்த மற்றும் ஏற்றுமதி செய்ய setInterval() பயன்படுத்தப்படுகிறது. |
ஜாவாஸ்கிரிப்ட் கேன்வாஸுடன் டைனமிக் அனிமேஷன்களை உருவாக்குதல்
இந்த எடுத்துக்காட்டில், ஜாவாஸ்கிரிப்ட் மற்றும் HTML5 இன் கேன்வாஸ் உறுப்பைப் பயன்படுத்தி அனிமேஷன் செய்யப்பட்ட வரியை எவ்வாறு செயல்படுத்துவது என்பதை ஆராய்வோம். சீரற்ற அலைவீச்சுக் கோடுகளைப் பயன்படுத்தி இணைய போக்குவரத்தை உருவகப்படுத்துவதே குறிக்கோள். கேன்வாஸ் உறுப்பைப் பயன்படுத்தி அனிமேஷன் தொடங்குகிறது மற்றும் அதன் 2D சூழலை மீட்டெடுக்கிறது . 2D சூழல் வடிவங்கள், கோடுகள் மற்றும் சிக்கலான கிராபிக்ஸ் வரைவதற்கு அனுமதிக்கிறது. மென்மையான அனிமேஷனை உருவாக்க, செயல்பாடு பயன்படுத்தப்படுகிறது, இது உலாவிக்கான ரெண்டரிங்கை மேம்படுத்துகிறது, தேவையற்ற கணக்கீடுகளை குறைக்கிறது.
இந்த ஸ்கிரிப்ட்டின் முக்கிய அம்சங்களில் ஒன்று அலையின் வீச்சில் சீரற்ற தன்மையை அறிமுகப்படுத்துவதாகும். கணிக்கக்கூடிய பாதையுடன் நிலையான சைன் அலையைப் பயன்படுத்துவதற்குப் பதிலாக, ஒவ்வொரு சட்டத்திற்கும் ஒரு சீரற்ற வீச்சு உருவாக்குகிறது. வரியின் ஒவ்வொரு பகுதியும் கணிக்க முடியாத வகையில் ஏற்ற இறக்கமாக இருப்பதை இது உறுதி செய்கிறது, இணைய போக்குவரத்தின் நடத்தையைப் பிரதிபலிக்கிறது, இது மாறும் மற்றும் தொடர்ந்து மாறுகிறது. செயல்பாடு புதிய சட்டகத்தை வரைவதற்கு முன், முந்தைய சட்டகத்தை அழிக்க, கோடுகள் ஒன்றுடன் ஒன்று வராமல் தடுக்க இது அவசியம்.
அனிமேஷனின் மையமானது லூப்பில் உள்ளது, அங்கு நாம் ஒரு ஃபார் லூப்பைப் பயன்படுத்தி கேன்வாஸை கிடைமட்டமாக நகர்த்துகிறோம். ஒவ்வொரு x-கோர்டினேட்டிற்கும், சைன் அலையின் முடிவை கேன்வாஸின் நடுப்புள்ளியில் சேர்ப்பதன் மூலம் ஒரு புதிய y-கோர்டினேட் கணக்கிடப்படுகிறது, குறிப்பிட்ட x மதிப்பிற்காக உருவாக்கப்பட்ட சீரற்ற அலைவீச்சுடன் அதை சரிசெய்கிறது. இது ஒரு மென்மையான, பாயும் கோட்டை உருவாக்குகிறது, இது பல்வேறு உயரங்களில் ஊசலாடுகிறது. முறை ஒவ்வொரு புதிய (x, y) ஒருங்கிணைப்புக்கும் ஒரு கோடு பகுதியை வரையப் பயன்படுகிறது.
இறுதியாக, வரிக்கான பாதை கட்டப்பட்டதும், தி கேன்வாஸில் வரியை வழங்க முறை பயன்படுத்தப்படுகிறது. அனிமேஷன் தொடர்ந்து முன்னேறுவதை உறுதி செய்வதற்காக, ஒவ்வொரு முறையும் xOffset மாறி அதிகரிக்கப்படும். இதன் விளைவாக, அலைவீச்சில் சீரற்றமயமாக்கலுக்கு நன்றி, பல்வேறு அளவு தீவிரத்துடன் இணைய போக்குவரத்தை உருவகப்படுத்தும் முடிவற்ற அனிமேஷன் ஆகும். முழு செயல்முறையும் பயன்படுத்தி லூப் செய்யப்படுகிறது , அனிமேஷன் மென்மையாகவும் உலாவியின் புதுப்பிப்பு விகிதத்துடன் ஒத்திசைவாகவும் இயங்குவதை உறுதிசெய்கிறது.
ஜாவாஸ்கிரிப்ட் கேன்வாஸுடன் சீரற்ற இணைய போக்குவரத்து அனிமேஷன்களை செயல்படுத்துதல்
கேன்வாஸ் கோடுகளை சீரற்ற அலைவீச்சுகளுடன் அனிமேட் செய்ய தூய ஜாவாஸ்கிரிப்டைப் பயன்படுத்தி முன்-இறுதி அணுகுமுறை
const canvas = document.getElementById('myCanvas');
const ctx = canvas.getContext('2d');
let xOffset = 0;
const speed = 2;
function getRandomAmplitude() {
return Math.random() * 100; // Generates random amplitude for each line
}
function animate() {
ctx.clearRect(0, 0, canvas.width, canvas.height);
ctx.beginPath();
ctx.moveTo(0, canvas.height / 2);
for (let x = 0; x < canvas.width; x++) {
let amplitude = getRandomAmplitude();
let y = canvas.height / 2 + Math.sin((x + xOffset) * 0.02) * amplitude;
ctx.lineTo(x, y);
}
ctx.strokeStyle = '#000';
ctx.lineWidth = 2;
ctx.stroke();
xOffset += speed;
requestAnimationFrame(animate);
}
animate();
சேவையக பக்க அனிமேஷன்களை உருவாக்குவதற்கான பின்-இறுதி மாற்று
சர்வர் பக்கத்தில் அனிமேஷன்களை வழங்க கேன்வாஸ் தொகுதியுடன் Node.js
const { createCanvas } = require('canvas');
const fs = require('fs');
const canvas = createCanvas(800, 400);
const ctx = canvas.getContext('2d');
let xOffset = 0;
function getRandomAmplitude() {
return Math.random() * 100;
}
function generateFrame() {
ctx.clearRect(0, 0, canvas.width, canvas.height);
ctx.beginPath();
ctx.moveTo(0, canvas.height / 2);
for (let x = 0; x < canvas.width; x++) {
let amplitude = getRandomAmplitude();
let y = canvas.height / 2 + Math.sin((x + xOffset) * 0.02) * amplitude;
ctx.lineTo(x, y);
}
ctx.strokeStyle = '#000';
ctx.lineWidth = 2;
ctx.stroke();
xOffset += 2;
}
setInterval(() => {
generateFrame();
const buffer = canvas.toBuffer('image/png');
fs.writeFileSync('./frame.png', buffer);
}, 100);
ஃப்ரண்ட்-எண்ட் ஜாவாஸ்கிரிப்ட் அனிமேஷனை சோதிக்கிறது
Jest ஐப் பயன்படுத்தி உலாவி அடிப்படையிலான கேன்வாஸ் அனிமேஷனுக்கான யூனிட் சோதனைகள்
describe('Canvas Animation', () => {
test('should create a canvas element', () => {
document.body.innerHTML = '<canvas id="myCanvas" width="800" height="400"></canvas>';
const canvas = document.getElementById('myCanvas');
expect(canvas).toBeTruthy();
});
test('should call getRandomAmplitude during animation', () => {
const spy = jest.spyOn(global, 'getRandomAmplitude');
animate();
expect(spy).toHaveBeenCalled();
});
});
Back-End Node.js கேன்வாஸ் ரெண்டரிங் சோதனை
Mocha மற்றும் Chai ஐப் பயன்படுத்தி Node.js கேன்வாஸ் உருவாக்கத்திற்கான யூனிட் சோதனைகள்
const chai = require('chai');
const fs = require('fs');
const { createCanvas } = require('canvas');
const expect = chai.expect;
describe('Server-side Canvas Animation', () => {
it('should create a PNG file', (done) => {
const canvas = createCanvas(800, 400);
const ctx = canvas.getContext('2d');
generateFrame(ctx, canvas);
const buffer = canvas.toBuffer('image/png');
fs.writeFileSync('./testFrame.png', buffer);
expect(fs.existsSync('./testFrame.png')).to.be.true;
done();
});
});
நிகழ்நேர கேன்வாஸ் அனிமேஷன்களுடன் இணைய போக்குவரத்து காட்சிப்படுத்தலை மேம்படுத்துகிறது
டைனமிக் கேன்வாஸ் அனிமேஷன்களை உருவாக்குவதில் ஒரு அம்சம், அனிமேஷன்கள் எவ்வளவு சீராகவும் யதார்த்தமாகவும் செயல்படுகின்றன என்பதைக் கட்டுப்படுத்தும் திறன் ஆகும். இணைய போக்குவரத்தை பிரதிநிதித்துவப்படுத்தும் சூழலில், இது பெரும்பாலும் கணிக்க முடியாததாக இருக்கலாம், சைன் அலையின் வீச்சை சீரற்றதாக மாற்றுவது ஒரு அணுகுமுறையாகும். இருப்பினும், அனிமேஷனின் வேகம் மற்றும் அதிர்வெண்ணைக் கட்டுப்படுத்துவது மற்றொரு முக்கியமான காரணியாகும். பயன்படுத்தி அதிர்வெண் சரிசெய்தல் செயல்பாடு மற்றும் மூலம் அனிமேஷனின் வேகத்தை நன்றாகச் சரிசெய்தல் நிஜ உலக போக்குவரத்து ஓட்டங்களை மிகவும் துல்லியமாக பிரதிபலிக்க சுழற்சி உங்களை அனுமதிக்கிறது.
சீரற்ற வீச்சு தவிர, பெர்லின் அல்லது சிம்ப்ளக்ஸ் சத்தம் போன்ற சத்தம் அல்காரிதம் போன்ற கூறுகளை இணைப்பது அதிக கரிம வடிவங்களை உருவாக்க உதவும். இந்த இரைச்சல் செயல்பாடுகள் ஒத்திசைவான சீரற்ற தன்மையை உருவாக்குகின்றன, இது முற்றிலும் சீரற்ற எண்களைப் போலன்றி, புள்ளிகளுக்கு இடையே மென்மையான மாற்றங்களை உறுதி செய்கிறது. . இது பார்வைக்கு மிகவும் கவர்ச்சிகரமான அனிமேஷன்களை உருவாக்கலாம் மற்றும் அடிப்படை சைன் அலைகளை விட நிகழ்நேர தரவின் ஒழுங்கற்ற தன்மையை பிரதிபலிக்கும். கேம் மேம்பாடு மற்றும் நடைமுறை உருவாக்கம் போன்ற துறைகளில் இரைச்சல் அல்காரிதம்கள் பரவலாகப் பயன்படுத்தப்படுகின்றன.
நிகழ்நேர காட்சிப்படுத்தல்களை உருவாக்கும் போது மற்றொரு முக்கியமான கருத்தாக்கம் அனிமேஷன்களின் செயல்திறனை மேம்படுத்துவதாகும். கேன்வாஸ் தொடர்ந்து வரையும்போது, நினைவக நுகர்வு மற்றும் CPU பயன்பாடு அதிகரிக்கும், குறிப்பாக சிக்கலான கிராபிக்ஸ் மூலம். ஆஃப்-ஸ்கிரீன் கேன்வாஸ்கள் அல்லது ஒரு வினாடிக்கு ரெண்டர் செய்யப்பட்ட பிரேம்களின் எண்ணிக்கையைக் கட்டுப்படுத்துவது போன்ற முறைகளைப் பயன்படுத்துவதன் மூலம், அனிமேஷன் கணினியை சிரமப்படுத்தாமல் சீராக இருப்பதை உறுதிசெய்யலாம். கண்காணிப்பு கோடுகளின் இயக்கத்தைச் சரிசெய்வதற்கான மாறி, அனிமேஷன் திடீரென ரீசெட் செய்யாமல் தடையின்றி ஓடுவதையும் உறுதி செய்கிறது.
- கேன்வாஸ் அனிமேஷனின் வேகத்தை எவ்வாறு கட்டுப்படுத்துவது?
- இன் மதிப்பை அதிகரிப்பதன் மூலம் அல்லது குறைப்பதன் மூலம் நீங்கள் வேகத்தை சரிசெய்யலாம் மாறி, இது எவ்வளவு வேகமாக கட்டுப்படுத்துகிறது அனிமேஷனின் போது மாற்றங்கள்.
- கேன்வாஸ் அனிமேஷன்களில் பெர்லின் சத்தம் போன்ற இரைச்சல் அல்காரிதம்களைப் பயன்படுத்தலாமா?
- ஆம், பெர்லின் இரைச்சலைப் பயன்படுத்துவதற்குப் பதிலாக மென்மையான சீரற்ற வடிவங்களை உருவாக்குவதன் மூலம் ஒருங்கிணைக்க முடியும் வீச்சுக்கு. இது மிகவும் இயற்கையான, பாயும் அனிமேஷன்களை உருவாக்க உதவுகிறது.
- பெரிய அனிமேஷன்களுக்கு கேன்வாஸ் செயல்திறனை எவ்வாறு மேம்படுத்துவது?
- ஆஃப்-ஸ்கிரீன் கேன்வாஸ்கள், பிரேம் வீதத்தைக் குறைத்தல் அல்லது மீண்டும் வரைய வேண்டிய பகுதியைக் கட்டுப்படுத்துதல் போன்ற நுட்பங்களைப் பயன்படுத்தி செயல்திறனை மேம்படுத்தலாம் CPU பயன்பாட்டைக் குறைக்க.
- ஒரே கேன்வாஸில் ஒன்றுக்கு மேற்பட்ட அனிமேஷன் கோடுகளை வரைய முடியுமா?
- ஆம், பல சேர்ப்பதன் மூலம் மற்றும் அதற்குள் கட்டளைகள் செயல்பாடு, நீங்கள் வெவ்வேறு பாதைகளுடன் பல கோடுகளை வரையலாம்.
- அனிமேஷனை ஒரு படமாக எவ்வாறு சேமிப்பது?
- பயன்படுத்தி , நீங்கள் அனிமேஷனின் தற்போதைய சட்டத்தை ஒரு படமாக சேமிக்கலாம். கேன்வாஸை PNG அல்லது பிற பட வடிவங்களாக ஏற்றுமதி செய்ய இந்தக் கட்டளை உங்களை அனுமதிக்கிறது.
இணைய போக்குவரத்தைப் பிரதிபலிக்கும் டைனமிக் கேன்வாஸ் அனிமேஷனை உருவாக்க, கணித செயல்பாடுகள் மற்றும் சீரற்றமயமாக்கல் ஆகியவற்றின் கலவை தேவைப்படுகிறது. அறிமுகப்படுத்துகிறது அலைவீச்சில் உள்ள மதிப்புகள், அனிமேஷன் கணிக்க முடியாததாகவும் ஈடுபாட்டுடனும் இருப்பதை உறுதிசெய்கிறது, நிகழ்நேரத்தில் ஏற்ற இறக்கமான போக்குவரத்து முறைகளை உருவகப்படுத்துகிறது.
மென்மையை அடைய, பயன்படுத்துதல் முக்கியமானது. இது அனிமேஷனை உலாவியின் புதுப்பிப்பு வீதத்துடன் ஒத்திசைக்கிறது, இது ஒரு திரவ காட்சி அனுபவத்தை வழங்குகிறது. சரியான தேர்வுமுறை மூலம், முடிவற்ற அனிமேஷன் இணைய காட்சிப்படுத்தல் மற்றும் பிற நிகழ் நேர தரவு காட்சிகளுக்கான சக்திவாய்ந்த கருவியாக இருக்கும்.
- பயன்பாடு பற்றிய விரிவான தகவலுக்கு அனிமேஷன்களுக்கான ஜாவாஸ்கிரிப்ட், அதிகாரப்பூர்வ Mozilla Developer Network (MDN) இல் உள்ள ஆவணங்களை நீங்கள் ஆராயலாம்: MDN Web Docs - Canvas API .
- JavaScript அனிமேஷன்களை மேம்படுத்துதல் மற்றும் உலாவி செயல்திறனை நிர்வகித்தல் பற்றிய நுண்ணறிவுகளுக்கு, இந்த வழிகாட்டியைப் பார்க்கவும்: MDN Web Docs - requestAnimationFrame() .
- இந்த விரிவான வழிகாட்டி கேன்வாஸில் சீரற்ற அனிமேஷன்களுக்கு பெர்லின் சத்தத்தைப் பயன்படுத்துவதைப் பற்றி விவாதிக்கிறது: குறியீட்டு ரயில் - பெர்லின் சத்தம் .
- சீரற்ற மதிப்புகளை உருவாக்குவது பற்றி மேலும் அறிக ஜாவாஸ்கிரிப்டில்: MDN Web Docs - Math.random() .